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