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

The*_*hat 2 types go

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

例如

type mybasket struct {
    Coupons string
    Amount int
    ....... // string or int
}
Run Code Online (Sandbox Code Playgroud)

Int*_*net 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
}
Run Code Online (Sandbox Code Playgroud)

印刷品:

[{foo bar} {baz bat}]
Run Code Online (Sandbox Code Playgroud)

操场