pointers - 返回类型与 struct golang 相同

标签 pointers go struct

我有一个结构:

type Race struct {
    Name    string `json:"Name"`
    About   string `json:"About"`
    Health  int    `json:"Health"`
    Attacks []Move `json:"Attacks"`
}

和一个加载结构的函数:

func LoadClass(path string) *Race {
    bytes, err := ioutil.ReadFile(path)
    if err != nil {
        panic(err)
    }
    jsonClass := &Race{}
    err = json.Unmarshal(bytes, jsonClass)
    //decodes it
    if err != nil {
        panic(err)
    }
    return jsonClass
}

有没有办法使 jsonClass 类型为 Race 而不是 *Race

最佳答案

您可以将指向变量的指针传递给 Unmarshal,然后只返回该变量。

func LoadClass(path string) (race Race) {
    bytes, err := ioutil.ReadFile(path)
    if err != nil {
        panic(err)
    }
    if err = json.Unmarshal(bytes, &race); err != nil {
        panic(err)
    }
    return
}

关于pointers - 返回类型与 struct golang 相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36392977/

相关文章:

c++ - `const T* const` 是什么意思?

c++ - string::std find 方法总能找到一个字符,即使它不在字符串中

go - 为什么这个零长度和零容量 slice 不为零?

Go ZMQ4 - 关闭在 Recv 上阻塞的套接字?

http - Go 中基于 HTTP 的 JSONRPC

C++ 使用结构指针更新数据成员

c - 使用结构数组与结构指针数组的优缺点是什么?

c - 为什么这个销毁函数在单链表中抛出段错误

arrays - 如何在结构数组中找到最大/最小值

无法将 union 成员指定为 NULL