types - 如何在结构上定义可变字段?去

标签 types go

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

例如

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

最佳答案

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

例如:

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

关于types - 如何在结构上定义可变字段?去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27098062/

相关文章:

go - 为什么具有匿名结构字段的结构不满足在该类型的别名上定义的方法?

unit-testing - 如何正确测试调用其中另一个函数的处理程序

c# - 什么可以用作 C# 字典中的键?

haskell - 多态类型的显式类型签名。第二部分

types - 在 Common Lisp 中使用 `satisfies` 和 `and`

java - 如何在 java 中将 list<object> 转换为 list<MyType> ?

go - 如何检查 errors.Errorf() 中的类型错误?

go - 无人机日志存储在哪里?

go - 为不同的go结构创建构造函数

typescript - 如何从多个属性动态构造一个类型?