猿问

不允许分配相同的类型

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


不能在作业 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

    }


陪伴而非守候
浏览 140回答 1
1回答

温温酱

这两个结构实际上并不相同。根据 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
随时随地看视频慕课网APP

相关分类

Go
我要回答