登录
首页 >  Golang >  Go问答

结构组件的消失分配值

来源:stackoverflow

时间:2024-04-09 23:42:33 161浏览 收藏

大家好,我们又见面了啊~本文《结构组件的消失分配值》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

我正在尝试创建一个结构列表,并将值分配给列表中每个结构的组件:

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)

这样,您可以先设置值,然后将结构添加到数组中

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《结构组件的消失分配值》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>