gpt4 book ai didi

go - 具有返回值的go函数

转载 作者:数据小太阳 更新时间:2023-10-29 03:47:15 24 4
gpt4 key购买 nike

我看到了这段代码,并试图理解这一行

func (ml *MarketList) UnmarshalJSON(b []byte) error 

在上面的代码行中,我相信函数名称是UnmarshallJSON,它将字节数组作为输入,并将错误返回作为输出。是什么
func (ml *MarketList)

我知道*作为取消引用的运算符,但不了解这里的上下文。如果有人可以解释,那将是很好的。
package main

import (
"encoding/json"
"fmt"
)

var jsonBytes = []byte(`
{"MS": {
"last":"25",
"highestBid":"20"},
"GE": {
"last": "24",
"highestBid": "22"}
}`)

type Market struct {
MarketName string
Last string
HighestBid string
}

type MarketList []Market

func (ml *MarketList) UnmarshalJSON(b []byte) error {
tmp := map[string]Market{}
err := json.Unmarshal(b, &tmp)
if err != nil {
return err
}

var l MarketList
for k, v := range tmp {
v.MarketName = k
l = append(l, v)
}

*ml = l
return nil
}

func main() {
ml := MarketList{}
// Unmarshal directly into a []Market alias
_ = json.Unmarshal(jsonBytes, &ml)

fmt.Printf("%+v\n", ml)
}

最佳答案

这是定义指针​​类型的方式。例如:

var a string 
var b *string // pointer to a string
b = &a

在您的情况下, *MarketList是指向MarketList的类型指针。

我完全建议您将 tour of Go制作成这些内容。

关于go - 具有返回值的go函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51812596/

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