Go lang是否可以创建一个也可以用作切片的结构?

时间:2017-06-07 14:22:38

标签: go

是否可以在go中创建一个也可以作为切片访问的结构? 所以,例如,我想要这样的事情:

type Item struct {
    Name string
}

type ItemList struct {
    PackDate time.Time
    []Item
}

然后我可以作为切片访问ItemList中的Item。

myItemList[0].Name  

或者以正常的struct方式访问ItemList的成员。

myItemList.PackDate

如果无法做到这一点,是否有任何推荐的模式用于处理带有这样的元数据的切片?

2 个答案:

答案 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