Golang结构数组值不附加在循环中
Posted
技术标签:
【中文标题】Golang结构数组值不附加在循环中【英文标题】:Golang struct array values not appending In loop 【发布时间】:2016-03-23 14:49:17 【问题描述】:这是我的代码:
package main
import(
"fmt"
)
type Category struct
Id int
Name string
type Book struct
Id int
Name string
Categories []Category
func main()
var book Book
book.Id = 1
book.Name = "Vanaraj"
for i := 0; i < 10; i++
book.Categories = []Category
Id : 10,
Name : "Vanaraj",
,
fmt.Println(book)
我需要将值附加到类别中。这些值仅附加一次。但我需要将值附加到数组中。
如何解决这个问题?
【问题讨论】:
【参考方案1】:您没有向book.Categories
附加任何内容,在for
循环的每次迭代中,您始终使用composite literal 创建一个新切片并将其分配给book.Categories
。
如果要附加值,请使用内置的append()
函数:
for i := 0; i < 10; i++
book.Categories = append(book.Categories, Category
Id: 10,
Name: "Vanaraj",
)
输出(在Go Playground 上试试):
1 Vanaraj [10 Vanaraj 10 Vanaraj 10 Vanaraj 10 Vanaraj 10 Vanaraj 10 Vanaraj 10 Vanaraj 10 Vanaraj 10 Vanaraj 10 Vanaraj]
还请注意,如果您事先知道迭代次数(在您的情况下为10
),您可以事先创建一个足够大的切片,您可以使用for ... range
,只需将值分配给正确的元素而不调用@ 987654332@。这样更有效率:
book.Categories = make([]Category, 10)
for i := range book.Categories
book.Categories[i] = Category
Id: 10,
Name: "Vanaraj",
【讨论】:
先生,我遇到了同样的问题,这个解决方案解决了以上是关于Golang结构数组值不附加在循环中的主要内容,如果未能解决你的问题,请参考以下文章