1. 问题的提出 赋值时是值语义还是引用语义对程序的行为有很大影响,如果我们想要某个函数对一个变量的修改对外部不可见,我们希望值语义的赋值,反之,若我们想要某个函数对一个变量的修改是全局可见时,我们希望引用语义的赋值。那么Go中的赋值究竟是值语义还是引用语义? 2. Go中的赋值 在Go中大部分类型的赋值是值类型,包括: 基本类型,如byte、int、bool、float32、float64和string等; 复合类型,如数组(array)、结构体(struct)和指针(pointer)等。 可以看到,