Pointers Golang编辑从main()到函数的struts数组

Pointers Golang编辑从main()到函数的struts数组,pointers,struct,go,Pointers,Struct,Go,下面是我的代码的一个简明版本,希望您能提供帮助 基本上,我会将一个结构数组传递给floatInSlice(),在这个数组中,一个新的结构被添加到数组中,或者一个现有的结构AudienceCategory.Sum被++ 除b.Sum=b.Sum+1外,所有部件均正常工作 现在我知道,如果我想将对象作为指针而不是值传递,我需要使用*/&但我似乎无法让它工作,任何帮助都是值得的 type AudienceCategory struct { Cat int Sum int } var

下面是我的代码的一个简明版本,希望您能提供帮助

基本上,我会将一个结构数组传递给floatInSlice(),在这个数组中,一个新的结构被添加到数组中,或者一个现有的结构AudienceCategory.Sum被++

除b.Sum=b.Sum+1外,所有部件均正常工作

现在我知道,如果我想将对象作为指针而不是值传递,我需要使用*/&但我似乎无法让它工作,任何帮助都是值得的

type AudienceCategory struct {
    Cat int
    Sum int
}


var counter = []AudienceCategory{}


func main() {
     for i := 1; i < len(words); i++ {
         counter = floatInSlice(category,counter)
        if counter != nil{}
     }
     fmt.Printf("%v ", counter) 
}


func floatInSlice(category int, counter *[]AudienceCategory) []AudienceCategory {
    for _, b := range counter {
        if b.Cat == category {
            b.Sum = b.Sum+1

            return counter
        }
    }
    x := AudienceCategory{Cat:category,Sum:1}
    counter = append( counter, x)
    return counter
}
键入audenceCategory结构{
猫智力
总和整数
}
变量计数器=[]AudienceCategory{}
func main(){
对于i:=1;i
编辑******

终于成功了谢谢大家的帮助

func floatInSlice(category int, counter []AudienceCategory) []AudienceCategory {

    for i := 0; i < len(counter); i++ {
        if counter[i].Cat == category {
            counter[i].Sum = counter[i].Sum+1

            return counter
        }
    }
    x := AudienceCategory{Cat:category,Sum:1}
    counter = append( counter, x)
    return counter
}
func floatInSlice(int类,计数器[]AudienceCategory)[]AudienceCategory{
对于i:=0;i
当您使用
中的值范围时,b:=范围计数器
b
包含
计数器
的每个元素的副本。因此,对丢失的副本求和,而不是对切片中的元素求和

你应该使用

func floatInSlice(category int, counter *[]AudienceCategory) []AudienceCategory {
    for i, b := range *counter {
        if b.Cat == category {
            (*counter)[i].Sum = (*counter)[i].Sum+1

            return counter
        }
    }
    x := AudienceCategory{Cat:category,Sum:1}
    counter = append( counter, x)
    return counter
}

许多thx siritinga可能重复,但我得到以下错误/readfile.go:83:无法将计数器(类型[]AudienceCategory)用作floatInSlice的参数中的类型*[]AudienceCategory。/readfile.go:147:无法在计数器(类型*[]AudienceCategory)上设置范围。/readfile.go:151:无法将计数器(类型*[]AudienceCategory)用作类型[]返回参数中的AudienceCategory./readfile.go:155:要追加的第一个参数必须是slice;have*[]audencecategory./readfile.go:156:无法将计数器(类型*[]audencecategory)用作返回参数中的类型[]audencecategory不能覆盖计数器(类型*[]audencecategory)