go 笔记

Go 语言的变量声明格式为:

var 变量名 变量类型 返回类型.

匿名变量不占用命名空间,不会分配内存。匿名变量与匿名变量之间也不会因为多次声明而无法使用。

func GetData() (int, int) {
    return 100, 200
}

a, _ := GetData()
_, b := GetData()

fmt.Println(a, b)

Go 语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有切片、结构体、函数、map、通道(channel)等。Go 语言的基本类型和其他语言大同小异,切片类型有着指针的便利性,但比指针更为安全,很多高级语言都配有切片进行安全和高效率的内存操作。

  1. // 定义商标结构
  2. type Brand struct {
  3. }
  4. // 为商标结构添加Show()方法
  5. func (t Brand) Show() {
  6. }

遍历数组:

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的方式。

原文地址:https://www.cnblogs.com/snow-man/p/10167493.html