是否可以在go中创建一个也可以作为切片访问的结构? 所以,例如,我想要这样的事情:
type Item struct {
Name string
}
type ItemList struct {
PackDate time.Time
[]Item
}
然后我可以作为切片访问ItemList中的Item。
myItemList[0].Name
或者以正常的struct方式访问ItemList的成员。
myItemList.PackDate
如果无法做到这一点,是否有任何推荐的模式用于处理带有这样的元数据的切片?
答案 0 :(得分:4)
建议做的是简单地将切片作为结构字段访问:
type Item struct {
Name string
}
type ItemList struct {
PackDate time.Time
Items []Item
}
访问值:
myItemList.Items[0].Name
myItemList.PackDate
迭代切片:
for _, item := range myItemList.Items {
// do something with item.Name
}
答案 1 :(得分:0)
例如,
package main
import (
"fmt"
"time"
)
type Item struct {
Name string
}
type ItemList struct {
PackDate time.Time
Items []Item
}
func main() {
list := ItemList{
PackDate: time.Now(),
Items: []Item{{Name: "John"}, {Name: "Jane"}},
}
fmt.Println(list)
fmt.Println(list.PackDate)
fmt.Println(list.Items[1].Name)
}
输出:
{2009-11-10 23:00:00 +0000 UTC [{John} {Jane}]}
2009-11-10 23:00:00 +0000 UTC
Jane