为了账号安全,请及时绑定邮箱和手机立即绑定

不允许分配相同的类型

不允许分配相同的类型

Go
陪伴而非守候 2022-06-13 16:41:24
我在这里定义了相同的类型,但是在编译时出现错误:不能在作业 i 中使用问题(类型 []struct { Question questions.MasterQuestion })作为类型 []struct { Question questions.MasterQuestion "json:"question"" }这是我的代码:类型文件type QuestionnaireInternal struct {    ID            string                `json:"id"`    Questionnaire InternalQuestionnaire `json:"questionnaire"`    Questions     []struct {        Question MasterQuestion `json:"question"`    } `json:"questions"`}DAL 文件qusIdxMap := make(map[string]struct{})    var questions []struct {Question questions.MasterQuestion}    for {        buf := idRows.NextBytes()        if len(buf) == 0 {            break        }        var ids []string        if de := json.Unmarshal(buf, &ids); de != nil {            return nil, de        }        for i := range ids {            if _, exists := qusIdxMap[ids[i]]; exists == false {                qusIdxMap[ids[i]] = struct{}{}            }        }        for j := range qus.Questions {            if _, exists := qusIdxMap[qus.Questions[j].Question.QuestionID]; exists {                *ERROR HERE:* **questions = append(questions, &qus.Questions[j])**            }        }        qus.Questions = questions    }
查看完整描述

1 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

这两个结构实际上并不相同。


根据 Go 规范,字段标签参与类型标识(强调我的):


如果两个结构类型具有相同的字段序列,并且相应的字段具有相同的名称、相同的类型和相同的标签,则它们是相同的。来自不同包的非导出字段名称总是不同的。


由于您使用的是匿名结构,因此您必须在questionsvar 声明中添加相同的标记:


var questions []struct {Question questions.MasterQuestion `json:"question"`}

或者你可以定义一个Question类型:


type QuestionnaireInternal struct {

    ID            string                `json:"id"`

    Questionnaire InternalQuestionnaire `json:"questionnaire"`

    Questions     []Question            `json:"questions"`

}


type Question struct {

    Question MasterQuestion `json:"question"`

}

接着


var questions []Question


查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号