我的結構如下所示:package mainimport ( "fmt")func main() { s := Stats{} s.initStructs() s.Update() fmt.Println(s)}type Stats struct { Languages []Language}type Language struct { Name string Mentions int Frameworks []Framework}type Framework struct { Name string Mentions int Sources []string}func (s *Stats) Update() { for _, pl := range s.Languages { pl.Mentions++ for _, fm := range pl.Frameworks { fm.Mentions++ } }}func (s *Stats) initStructs() { techs := map[string][]string{ "python": {"flask", "django", "tensorflow", "pytorch"}, "javascript": {"angular", "typescript", "node", "express", "react", "vue", "socket.io"}, "c#": {"asp.net", "unity", ".net"}, "php": {"laravel"}, "markup": {"html", "css", "scss"}, "java": {"spring", "oracle", "grails", "kotlin", "android"}, "sql": {"postgre", "mongo", "mysql"}, "c++": {"unity"}} for item := range techs { planguage := Language{Name: item} for _, i := range techs[item] { f := Framework{Name: i} planguage.Frameworks = append(planguage.Frameworks, f) } s.Languages = append(s.Languages, planguage) }}我有一個initStructs()方法讓Stats生成看起來像這樣的嵌套結構{[{python 0 [{flask 0 []} {django 0 []} {tensorflow 0 []} {pytorch 0 []}]} {javascript 0 [{angular 0 [....但是,問題是,每當我嘗試使用Update()方法更新嵌套結構的值時,它不起作用,值不會被更新。我確實意識到我需要使用指針,但不確定如何。
1 回答

慕斯王
TA貢獻1864條經驗 獲得超2個贊
當您遍歷數組的元素時,循環變量是該元素的副本。因此,您的更新是在副本上完成的,而不是在結構本身上。改用索引:
func (s *Stats) Update() {
for i := range s.Languages {
s.Languages[i].Mentions++
for j := range s.Languages[i].Frameworks {
s.Languages[i].Frameworks[j].Mentions++
}
}
}
- 1 回答
- 0 關注
- 139 瀏覽
添加回答
舉報
0/150
提交
取消