go - 结构组件的分配值消失
问题描述
我正在尝试创建一个结构列表并将值分配给列表中每个结构的组件:
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)
这样你首先设置值,然后将结构添加到你的数组中
推荐阅读
- c++ - 为什么我的 D 代码查找素数比我的 C++ 代码快得多?
- arrays - 将多个地图合并到列表/数组中
- javascript - window.XMLHttpRequest.prototype 中的延迟
- pandas - 如何在熊猫中做加权平均?
- linkedin - LinkedIn r_liteprofile 没有提供公共 url 和个人资料图片
- neo4j - 我应该删除数据库中没有节点的标签吗?
- time-series - 使用 Influxdb 中的时间序列数据检测峰值
- detox - 在 CI 期间运行排毒测试
- arduino - Firmata,未声明的 PULSE_IN 错误
- ruby-on-rails - PG::UnableToSend:服务器使用 ruby on rails 意外关闭了连接