-----1-----
package main
import (
"fmt"
"go_dev/day1/goroute_example/goroute"
)
//利用go 的goroute 实现不同文件的并发操作
//通过channel 管道(chan) 线程数据共同
func main() {
//声明一个管道pipe
var pipe chan int
pipe = make(chan int, 3)
go goroute.Add(100, 200, pipe)
//把管道里的值提到sum上
sum := <-pipe
fmt.Println("sum==", sum)
}
-----2-----
package calc
// go区分可导出的方法 是首字母大写
func Add(a int, b int) int {
return a + b
}
----3-----
package add
var Name string = "hhh"
var Age int = 10
func init() {
Name = "???"
Age = 88
}
// init 是每个独立的包输出到main 最后执行的函数
// a "go_dev/day2/example2/add" ==>给包重新名
----4-----
包只初始化,不引用
import (_ "add")
----5-----
const 代表永远是只读的,不能修改
const(
a = 0
b = 1
c = 2
)
更专业的
const(
a = iota (下面的b c 自增1)
b //1
c //2
)
----6-----
值类型和引用类型
1.值类型:变量直接存储值,内存通常在栈堆中分配 (创造新的一份)----基本数据类型int、float、bool、string和数组、struct
2.引用类型:变量存储的是一个地址 通过地址找到对应的值 (指向地址) ----指针、slice、map、chan
----7-----
package main
import "fmt"
// *操作地址对应的内存的值
func swap(a *int, b *int) {
tmp := *a
*a = *b
*b = tmp
return
}
func main() {
first := 100
second := 200
// & 传入地址
swap(&first,&second)
fmt.Println('1',&first)
fmt.Println('2',&second)
fmt.Println('1',first)
fmt.Println('2',second)
}
关于指针
package main
import "fmt"
func main() {
var a int = 10
fmt.Println("ssss",&a)
// 指针变量声明 指针存的是地址! 指针就是一个存放地址的变量
var p *int
p = &a
fmt.Println("aaaa",p)
// *指针就能取出对应的值
*p = 100
fmt.Println("ssss",a)
}