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 關注
- 112 瀏覽
添加回答
舉報