从 Go 中的函数返回指向结构的指针
我有两个包含不同数据的公共结构,以及一个包含两个公共结构之一的私有中间结构。我还有一个函数可以解组中间结构,确定它包含哪个公共结构,并返回两个公共结构之一。我面临的问题是最后一个函数的返回值。最简单的是,我认为我可以返回*struct{},但我的 IDE 中一直出现类型不匹配的情况。我很抱歉发布了比可能需要的更多的代码,但我正在努力让它尽可能接近我正在处理的代码。package mainimport ( "encoding/json" "errors")// These vars are some errors I'll use in the functions later onvar ( errInvaldBase64 = errors.New("invalid base64") errInvalidStructType = errors.New("invalid struct type"))// Struct1 public structtype Struct1 struct { FName string `json:"first-name"` LName string `json:"last-name"`}// Struct2 public structtype Struct2 struct { Date string `json:"date"` Items []int `json:"items"`}// intermediateStruct private struct// The Type field indicates which kind of struct Data contains (Struct1 or Struct2)// The Data field contains either Struct1 or Struct2 which was previously marshalled into JSONtype intermediateStruct struct { Type structType Data []byte}// The following type and const are my understanding of an enum in Go// structType is a private type for the type of struct intermediateStruct containstype structType int// These public constants are just to keep my hands out of providing values for the different struct typesconst ( StructType1 structType = iota StructType2)// unmarshalStruct1 unmarshalls JSON []byte into a new Struct1 and returns a pointer to that structfunc unmarshalStruct1(b []bytes) (*Struct1, error) { newStruct1 := new(Struct1) err := json.Unmarshal(b, newStruct1) if err != nil { return nil, errInvalidBase64 } return newStruct1, nil}// unmarshalStruct2 unmarshalls JSON []byte into a new Struct2 and returns a pointer to that structfunc unmarshalStruct2(b []bytes) (*Struct2, error) { newStruct2 := new(Struct2) err := json.Unmarshal(b, newStruct2) if err != nil { return nil, errInvalidBase64 } return newStruct2, nil}我知道有一种方法可以实现我想要实现的目标——我只是缺乏实现目标的经验/理解。感谢您的任何和所有输入!