我有两个包含不同数据的公共结构,以及一个包含两个公共结构之一的私有中间结构。我还有一个函数可以解组中间结构,确定它包含哪个公共结构,并返回两个公共结构之一。我面临的问题是最后一个函数的返回值。最简单的是,我认为我可以返回*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}我知道有一种方法可以实现我想要实现的目标——我只是缺乏实现目标的经验/理解。感谢您的任何和所有输入!