golang书签

基本语法

  • 数组

[len]T共同构成数组类型,[3]int[4]int是不同类型

  • 切片

以数组申明切片需注意左闭右开原则。
var a []int == nil但是与nil map不同,不好理解

  • map

必须make初始化,否则panic报nil map
下面代码很奇怪

func main() {
	type Map map[string][]int
	m := make(Map)
	s := []int{1, 2}
	s = append(s, 3)
	fmt.Printf("%+v
", s)
	m["q1mi"] = s
	s = append(s[:1], s[2:]...)
	fmt.Printf("%+v
", s)
	fmt.Printf("%+v
", m["q1mi"])
}

结构体

struct{}可以看作是匿名结构体类型,struct{}{}就是匿名结构的实例了

接口

  1. 空接口
    两种类型断言方式
func funcA(a interface{}) {
    v, ok = a.(string)  // 空接口变量.(具体类型), 返回值可以不取ok
    if !ok {
        fmt.Println("Guess failed")
    } else {
        fmt.Println(v)
    }
} 

func funcB(a interface{}) {
    switch t := a.(type) {  // 空接口变量.(type) 只能写到switch块内
    case int64:
        fmt.Printf("I'm a int64, %v, %v", t, a.(int64))
    case string:
        fmt.Printf("I'm a string, %v, %v", t, a.(string))    
    }
}
原文地址:https://www.cnblogs.com/holidays/p/bookmark1.html