gpt4 book ai didi

go - 不允许分配相同的类型

转载 作者:行者123 更新时间:2023-12-01 22:30:58 25 4
gpt4 key购买 nike

我在这里相同地定义了类型,但是在编译时出现错误:

不能在分配中使用问题(类型[] struct {Question Question.MasterQuestion})作为类型[] struct {Question Problems.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
}

最佳答案

这两个结构实际上并不相同。
根据Go规范,字段标签会加入type identity(重点是我的):

如果两个结构类型具有相同的字段序列,并且对应的字段具有相同的名称,相同的类型,和相同的标记,则它们是相同的。来自不同软件包的未导出字段名称始终是不同的。

由于您使用的是匿名结构,因此必须向questions var声明中添加相同的标签:

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

关于go - 不允许分配相同的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62754960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com