gpt4 book ai didi

go - 我如何遍历解码器?

转载 作者:IT王子 更新时间:2023-10-29 01:55:13 29 4
gpt4 key购买 nike

我有 Python 背景,所以倾向于从迭代器的角度来思考。在我看来,Go 中的 range 关键字旨在让我们以几乎相同的方式思考,所以我想在 Go 中做一些语义上等同于这段 Python 代码的事情:

for obj in json_decoder:
# business logic

这是 Go 中的激励案例;考虑以下功能:

func (c *GorpController) Create(dec *json.Decoder) {
// business logic
}

我希望能够将其实现为:

for someValue := range dec {
// business logic
}

是否有某种方法可以将 rangeDecoder 接口(interface)一起使用?将它包装在不同接口(interface)中的函数将是理想的,并且惯用模式是可以接受的。

谢谢!

最佳答案

不幸的是,您只能将 range 与“数组、 slice 、字符串或映射,或从 channel 读取”一起使用(参见 effective go)

为了在解码时迭代结构,文档建议这样做:

dec := json.NewDecoder(strings.NewReader(jsonStream))
for {
var m Message
if err := dec.Decode(&m); err == io.EOF {
break
} else if err != nil {
log.Fatal(err)
}
fmt.Printf("%s: %s\n", m.Name, m.Text)
}

(直接取自 official doc example )

关于go - 我如何遍历解码器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33638113/

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