Go 中的某些类型是引用类型:映射、切片、通道、函数和方法。
有时您需要使用指向引用的指针。例如,
type Stack []interface{}
func (stack *Stack) Push(x interface{}) {
*stack = append(*stack, x)
}
您需要它,因为所有参数都是通过复制值传递的,并且append()可能需要在切片容量不够大的情况下重新分配内存。我明白了。
第一个问题。怎么样map的类型?如果我有一个基于 a 的自定义类型map,如果需要一些 key:value 插入或删除,我应该最好总是传递一个指向它的指针吗?
第二个问题。其他引用类型呢?Channel, 例如。我可以想象一种情况,我基于通道构建自定义类型,以对传递给通道的值实现一些自定义预处理。这里也需要指针?
对不起,如果这是基本的,但我真的想很好地掌握这个主题。
婷婷同学_
一只斗牛犬
相关分类