Go 如何修改结构的嵌套数组的值

Go 如何修改结构的嵌套数组的值,go,pointers,struct,Go,Pointers,Struct,我的结构如下所示: 主程序包 进口( “fmt” ) func main(){ s:=Stats{} s、 initStructs() s、 更新() fmt.Println(s) } 类型Stats结构{ 语言[]语言 } 类型语言结构{ 名称字符串 提到int 框架[]框架 } 类型框架结构{ 名称字符串 提到int 源[]字符串 } func(s*Stats)更新(){ 对于u,pl:=范围s.语言{ pl.提及++ 对于u,fm:=范围pl.框架{ fm.提及++ } } } func(

我的结构如下所示:

主程序包
进口(
“fmt”
)
func main(){
s:=Stats{}
s、 initStructs()
s、 更新()
fmt.Println(s)
}
类型Stats结构{
语言[]语言
}
类型语言结构{
名称字符串
提到int
框架[]框架
}
类型框架结构{
名称字符串
提到int
源[]字符串
}
func(s*Stats)更新(){
对于u,pl:=范围s.语言{
pl.提及++
对于u,fm:=范围pl.框架{
fm.提及++
}
}
}
func(s*Stats)initStructs(){
techs:=映射[字符串][]字符串{
“python”:{“flask”、“django”、“tensorflow”、“pytorch”},
“javascript”:{“angular”、“typescript”、“node”、“express”、“react”、“vue”、“socket.io”},
“c:{asp.net”,“unity”,“.net”},
“php”:{“laravel”},
“标记”:{“html”、“css”、“scss”},
“java”:{“spring”、“oracle”、“grails”、“kotlin”、“android”},
“sql”:{“postgre”、“mongo”、“mysql”},
“c++”:{“unity”}
对于项目:=范围技术{
语言:=语言{Name:item}
对于u,i:=靶场技术[项目]{
f:=框架{Name:i}
planguage.Frameworks=append(planguage.Frameworks,f)
}
s、 语言=附加(s.语言、平面语言)
}
}
我有一个initStructs()方法用于Stats生成如下所示的嵌套结构

{[{python 0[{flask 0[]}{django 0[]}{tensorflow 0[]}{pytorch 0[]}}{javascript 0[{angular 0[

但是,问题是,每当我试图用update()方法更新嵌套结构的值时,它都不起作用,这些值不会被更新


我确实意识到我需要使用指针,但不确定如何使用。

在数组的元素中循环时,循环变量是该元素的副本。因此,更新是在副本上完成的,而不是在结构本身上。请改用索引:

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++
        }
    }
}

回答你的问题了吗?是的。这就解决了我的问题。这很有意义……非常感谢。但是,你认为有没有办法用正常的
for\uu,item:=range list of structures
循环来解决这个问题?@Suni-See