golang中哪些引用类型的指针在声明时不用加&号,哪些在函数定义的形参和返回值类型中不用*号标注

问题如题。初学,对引用类型在声明以及作为函数形参和返回值时,到底要不要有&和*号,概念很混乱。希望能帮我理一理,感谢

阅读 2.8k
1 个回答

Go 中大部分数据类型都是值类型,比如整型、浮点型、字符串、数组、结构体、布尔等,值类型常会通过 & 取地址,在方法函数间传递可以避免拷贝。除了 & 取址,我们也可以使用 new 创建,返回的是对应类型的指针。

还有一部分类型,可以理解为引用类型,比如切片、映射、chan 等类型,使用它们一般不涉及取址操作,当然,它们本质是一个结构体,其中的指针类型成员指向了真正的内容。相对于值类型的 new,Go 引用类型的初始化基本都是通过 make 进行的。

指针从某种意义上看也是值类型,当然如果你关注的是指针指向地址的内容,可以把它理解为引用类型。

推荐问题
宣传栏