1 回答
TA贡献1815条经验 获得超6个赞
这与渠道无关。检查具有相同结果的代码:
package main
import (
"fmt"
)
type myType struct {
myString string
}
func main() {
in := [2]myType{
myType{myString: "string1"},
myType{myString: "string2"},
}
var types []*myType
for _, element := range in {
types = append(types, &element)
}
for _, element := range types {
fmt.Println(element.myString)
}
}
玩
问题是您正在使用一个指向变量的指针element,该变量每次循环都会获得一个新值,但变量本身保持不变,因此您附加到切片的所有指针都指向相同的值。要解决此问题,请附加值而不是指针,或者在循环中创建一个临时变量并将指针推送到临时变量
var types []myType
for element := range queue {
types = append(types, element)
}
或者
var types []*myType
for element := range queue {
tmp := element
types = append(types, &tmp)
}
- 1 回答
- 0 关注
- 79 浏览
添加回答
举报