Pointers 返回类型与struct golang相同

Pointers 返回类型与struct golang相同,pointers,go,struct,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(p

我有一个结构:

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

是的,只需返回
Race
的值,而不是
*Race

func LoadClass(path string) Race {

    // read file to []byte

    jsonClass := new(Race)
    _ = json.Unmarshal(bytes, jsonClass)

    // return the value jsonClass points to
    return *jsonClass
}

您可以将指向变量的指针传递给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
}

这让我大吃一惊,我不知道我们可以在函数声明中命名return