channel

nil和close channel

读写nil均会阻塞。敞开的管道依然能够读取数据(包含select也会选中),向敞开的管道写数据会处触发panic

slice

make slice

    s := make([]int, 10, 100)
    a := new([]int)    fmt.Println(*a == nil)    // true        b := make([]int, 0)    fmt.Println(b == nil)    // true        var c []int    fmt.Println(c == nil)    // false
切取

有两种表达方式:

a[low:hight]a[low:high:max]       // 其中max示意容量

a是数组和slice都会生成slice,如果a是字符串那么会生成字符串

数据结构
var a []inttype SliceHeader struct {    Data uintptr          // 0    Len  int              // 0    Cap  int              // 0}
var a = make([]int, 0)var b = []int{}type SliceHeader struct {    Data uintptr          // 指向8字节内容    Len  int              // 0    Cap  int              // 0}

string

utf-8
func testString() {    a := "你好"    fmt.Println(len(a))                        // 6    for i, c := range a {        fmt.Println(i, c, string(c))          // c是int32        // 0 20320 你        // 3 22909 好    }}