我在這里定義了相同的類型,但是在編譯時出現錯誤:不能在作業 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 關注
- 128 瀏覽
添加回答
舉報
0/150
提交
取消