英文:
Return type as same as struct golang
问题
我有一个结构体:
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)
// 解码
if err != nil {
panic(err)
}
return jsonClass
}
有没有办法将jsonClass
的类型设置为Race
而不是*Race
?
英文:
I have a struct :
type Race struct {
Name string `json:"Name"`
About string `json:"About"`
Health int `json:"Health"`
Attacks []Move `json:"Attacks"`
}
and a function that loads the struct:
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
}
is there a way to make jsonClass
of type Race
and not *Race
?
答案1
得分: 1
你可以将变量的指针传递给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
}
英文:
You can pass a pointer to the variable to Unmarshal and just return the variable.
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
}
答案2
得分: 0
是的,只需返回Race
类型的值,而不是*Race
类型的指针:
func LoadClass(path string) Race {
// 读取文件到 []byte
jsonClass := new(Race)
_ = json.Unmarshal(bytes, jsonClass)
// 返回 jsonClass 指向的值
return *jsonClass
}
英文:
Yes, just return a value of Race
instead of *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
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论