Go学习笔记二

一、array

  1. var arr [n]type
  2. arr := [n]type{elements} arr := […]type{elements}
  3. arrs := [n]type{[n]type{elements}, [n]type{elements}} arrs := [n]type{ {elements}, {elements} }

二、slice

  1. var fslice []type make([]T, len, cap)
  2. slice := []byte{‘a’, ‘b’, ‘c’, ‘d’}
  3. slice[i:j] slice[n:] slice[:n] slice[:]
  4. slice是引用类型,指针, len,cap,append,copy

三、map

  1. var v map[keyType] valueType
  2. v := make(map[keyType]valueType)
  3. v := map[keyType]valueType{k:v,k2:v2…}
  4. v[k]有两个返回值,第二个值根据是否存在
  5. 特点:无序、长度不固定、map也是引用类型

四、make和new

  1. make: 用于内建类型的内存分配
  2. new: 各种类型的内存分配,返回指针(指向零值)
  3. make(T, args)用于map slice channel,返回初始值的T类型(非零值)
  4. 遍历slice或map

eg:

func main() {
    scores := map[string]float32{"math": 99.5, "english": 96, "chinese": 88}
    for k, v := range scores {
        fmt.Print("key: ", k)
        fmt.Println("value:", v)
    }
}

五、函数

  1. 关键字func
  2. 一个或多个参数
  3. 返回值可以有多个
  4. 变参:func method(args…int){}
  5. 传递指针(地址)的优点,8bytes轻量,操作同一对象
  6. defer,延迟语句,执行到函数最后时,按逆序执行
  7. 函数作为值和类型 type typeName func()

六、Panic和Recover

  1. panic将中断函数的控制流,但是defer依然会执行,返回到调用它的地方,继续panic
  2. recover恢复panic,只能在延迟函数中使用

七、struct类型

  1. type typeName struct{}
sosop hou 16 March 2015
blog comments powered by Disqus