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