如何在结构上定义可变参数字段?走

时间:2014-11-24 04:50:45

标签: types go

除了自定义字段之外,我还需要一个接受名称/值对的数据结构。我该如何定义这样的结构?

e.g。

type mybasket struct {
    Coupons string
    Amount int
    ....... // string or int
}

1 个答案:

答案 0 :(得分:5)

我建议在类型上定义settergetter方法,并将值存储在结构中的切片中。

例如:

package main

import "fmt"

type kv struct {
    k, v string
}

type mybasket struct {
    Coupons  string
    Amount   int
    Contents []kv
}

func (t *mybasket) SetContents(c ...kv) {
    t.Contents = c
    return
}

func (t *mybasket) GetContents() []kv {
    return t.Contents
}

func main() {
    T := &mybasket{"couponlist", 100, []kv{}} // New Basket
    kvs := []kv{{"foo", "bar"}, {"baz", "bat"}} // Contents
    T.SetContents(kvs...) // Set Contents
    fmt.Printf("%v", T.GetContents()) // Get Contents
}

打印:

[{foo bar} {baz bat}]

Playground