返回类型与golang中的结构体相同。

huangapple go评论78阅读模式
英文:

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
}

huangapple
  • 本文由 发表于 2016年4月4日 08:34:55
  • 转载请务必保留本文链接:https://go.coder-hub.com/36392977.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定