gpt4 book ai didi

go - 消失的结构组件的赋值

转载 作者:数据小太阳 更新时间:2023-10-29 03:36:04 24 4
gpt4 key购买 nike

我正在尝试创建一个结构列表并为列表中每个结构的组件赋值:

package main
import ("fmt";"strconv")
type Mystruct struct{
code string
val int
}

var stlist []Mystruct // Need to create this list

func main(){
//Trying to create list of structures and assigning values:
for i,_:=range [3]int{} {
var st =Mystruct{}
stlist = append(stlist, st)
st.val = i
st.code = "code_"+strconv.Itoa(i)
fmt.Println("st.code=", st.code, "; st.val=", st.val) // Looks OK.
}
//check values of each item of list:
fmt.Println( "-----------------------" )
for _,e := range stlist{
fmt.Println("st.code=", e.code, "; st.val=", e.val) // values are blank! Why?
}
}

以上代码编译运行没有任何错误。然而,正如上面评论中提到的,虽然值似乎分配给了列表的每个组件,但在第二个循环中,发现结构列表中所有结构的两个组件都是空白的。输出是:

st.code= code_0 ; st.val= 0
st.code= code_1 ; st.val= 1
st.code= code_2 ; st.val= 2
-----------------------
st.code= ; st.val= 0
st.code= ; st.val= 0
st.code= ; st.val= 0

问题出在哪里,如何解决?感谢您的帮助。

最佳答案

在第一个循环中,您在设置值之前追加结构,因此您向数组添加了一个空结构。

你应该把

stlist = append(stlist, st)

st.val = i
st.code = "code_"+strconv.Itoa(i)

这样你首先设置值然后将结构添加到你的数组

关于go - 消失的结构组件的赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57610974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com