只是你知道,我对 Go 很陌生。
我一直在尝试制作这样的功能:
func PointersOf(slice []AnyType) []*AnyType{
//create an slice of pointers to the elements of the slice parameter
}
这就像&slice[idx]对切片中的所有元素做的一样,但是我在如何输入参数和返回类型以及如何创建切片本身方面遇到了麻烦。
此方法需要适用于内置类型的切片,以及结构的切片和指向内置类型/结构的指针的切片
调用此函数后,如果我不必强制转换指针切片会更好
编辑: 我需要这个方法的原因是有一个通用的方法来在 for ... range 循环中使用数组的元素,而不是使用该元素的副本。考虑:
type SomeStruct struct {
x int
}
func main() {
strSlice := make([]SomeStruct, 5)
for _, elem := range strSlice {
elem.x = 5
}
}
这不起作用,因为 elem 是 strSlice 元素的副本。
type SomeStruct struct {
x int
}
func main() {
strSlice := make([]SomeStruct, 5)
for _, elem := range PointersOf(strSlice) {
(*elem).x = 5
}
}
然而,这应该有效,因为您只复制指向原始数组中元素的指针。
MYYA
相关分类