gpt4 book ai didi

.net - golang 中的扩展方法?

转载 作者:IT王子 更新时间:2023-10-29 00:50:32 26 4
gpt4 key购买 nike

我是 .NET 专家。 Go 语言非常新。

在 .NET 中我们有扩展方法。 Go 中有什么等价物吗?

在 .NET 中,我会像 bsonTrans["trans.ticket"]

在那个 bsonTrans => bson 文档中

    "trans.ticket" => key in json

trans is outer level and

ticket is inner level

我正在使用 native mongodb 驱动程序。在那里我添加了我的扩展函数来执行这些操作。

就像第 n 级一样,我是用 .NET 做到的。

我想在 Go 中应用相同的逻辑。

示例

 b := []byte(trans)
var config map[string]interface{}
err := json.Unmarshal(b, &config)

fmt.Println(config["data"].(map[string] interface{})["issued"])

例如在那个例子中,我可以做类似的事情吗:

config["data.issued"] 哪个应该给出返回值?

请帮我解决这个问题......

实际的 json :-

(实际的 json 太大,但是我提供了一个字段较少的示例。)

{
"_id" : 2001,
"address" : {
"line1" : "",
"line2" : "",
"line3" : ""
},
"tickets" : [
{
"seq" : 2,
"add" : [
{
"seq" : "",
"amnt" : 50
},

{
"seq" : "",
"amnt" : 50
{
"seq" : "",
"amnt" : 50
}
}

}
]
}

不使用 struct 的原因是我的 json 有太多的嵌套结构,我有超过 10 个不同结构的模式。

所以我省略了结构。

我承认我不确定省略结构是最好的方法。

最佳答案

不像 .NET 那样支持扩展方法。

您可以做的最接近的事情是从字符串创建一个类型并在该类型上创建一个方法:

type MyString string
func (m *MyString) Method() {
}

func main() {
var s MyString = ""
s.Method()
}

关于.net - golang 中的扩展方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22153309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com