【问题标题】:go functions with return values带返回值的函数
【发布时间】:2019-01-19 14:37:27
【问题描述】:

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

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)
}

【问题讨论】:

标签: go


【解决方案1】:

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

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

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

我建议你把tour of Go这些东西在那里解释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 2011-11-18
    相关资源
    最近更新 更多