go 笔记
Go 语言的变量声明格式为:
var 变量名 变量类型 返回类型.
匿名变量不占用命名空间,不会分配内存。匿名变量与匿名变量之间也不会因为多次声明而无法使用。
func GetData() (int, int) { return 100, 200 } a, _ := GetData() _, b := GetData() fmt.Println(a, b)
Go 语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有切片、结构体、函数、map、通道(channel)等。Go 语言的基本类型和其他语言大同小异,切片类型有着指针的便利性,但比指针更为安全,很多高级语言都配有切片进行安全和高效率的内存操作。
- // 定义商标结构
- type Brand struct {
- }
- // 为商标结构添加Show()方法
- func (t Brand) Show() {
- }
遍历数组:
for k,v:= range team2{ fmt.Print(k,v) }
匿名函数赋值给匿名变量
f := func(data int) { fmt.Println(data) }
被捕获到闭包中的变量让闭包本身拥有了记忆效应,闭包中的逻辑可以修改闭包捕获的变量,变量会跟随闭包生命期一直存在,闭包本身就如同变量一样拥有了记忆效应。
当可变参数为 interface{} 类型时,可以传入任何类型的值。
结构体实例化方式:
1. var ins T
2. ins := new(T)
3. ins := &T{}
4. ins := T{}
延迟调用是在 defer 所在函数结束时进行,函数结束可以是正常返回时,也可以是发生宕机时。
defer 语句正好是在函数退出时执行的语句,所以使用 defer 能非常方便地处理资源释放问题。
使用 Go 语言的内嵌结构体实现对象特性,可以自由地在对象中增、删、改各种特性。Go 语言会在编译时检查能否使用这些特性。
interface{} 类型表示空接口,意思就是这种接口可以保存为任意类型
在 GOPATH 指定的工作目录下,代码总是会保存在 $GOPATH/src 目录下。在工程经过 go build、go install 或 go get 等指令后,会将产生的二进制可执行文件放在 $GOPATH/bin 目录下,生成的中间缓存文件会被保存在 $GOPATH/pkg 下。
包名为 main 的包为应用程序的入口包,编译源码没有 main 包时,将无法编译输出可执行的文件
待学习
http://c.biancheng.net/view/58.html
select常配合for循环来监听channel有没有故事发生。需要注意的是在这个场景下,break只是退出当前select而不会退出for,需要用break TIP / goto的方式。