我在这里定义了相同的类型,但是在编译时出现错误:不能在作业 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
- 1 回答
- 0 关注
- 139 浏览
添加回答
举报
0/150
提交
取消