go 踩坑

go 语言看起来简单,但是有很多细节需要注意。

  1. 数组里使用指针

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    type Student struct {
    Name *string
    }

    names = []string{"tom", "lina"}
    students := []Student{}

    for _, name := range names {
    // 这里如果使用 name 的地址,一定要重新赋值, eg:
    // n := name
    // student := Student{
    // Name: &n
    // }
    student := Student{
    Name: &name,
    }
    students = append(students, student)
    }


    for _, s := range students {
    fmt.Println(*s.Name)
    }

    // 这里输出的全部是: lina