Объявить и использовать карту в структурах - PullRequest
0 голосов
/ 14 октября 2019

Я очень нубист в Голанге и начал только несколько дней назад.

На самом деле я пытаюсь сделать простое упражнение, чтобы привыкнуть к синтаксису Голанга.

У меня естьэто в main.go:

package main 

import(
    "fmt"
    // "stringa"
    "main/survey"
)

func main() {
    var questions = []survey.Question{
        {
            Label: "Questão 1",
            Instructions : "Instrução",
            Options : {
                1 : "Op1",
                2 : "Op2",
            },
            Answer: {
                1 : "Op1",
            },
        },
    }
    fmt.Println(questions[0].Label)
}

И я пытаюсь сделать простые структуры, но я знаю. эта проблема решается, если я использую интерфейс, но если в следующих шагах мне понадобится использовать карты в структуре ...

PS: это пример структуры, которую я использовал:

package survey

import(
    // "fmt"
    // "strings"
    // "strconv"
)

// This is a simple Question in a survey code
type Question struct {
    // This is a label for the quetsion
    Label string
    // This is a instructions and is not required
    Instructions string
    // this is a multiple options answer
    Options map[int]string
    // this is a answer correct response
    Answer map[int]string
}

Наконец, вопрос:

Как я могу использовать map в параметрах внутри структуры и записать это в объявлении?

1 Ответ

1 голос
/ 14 октября 2019

Тип (map[int]string) должен использоваться в составном литеральном выражении для значения поля структуры:

var questions = []survey.Question{
    {
        Label:        "Questão 1",
        Instructions: "Instrução",
        Options: map[int]string{
            1: "Op1",
            2: "Op2",
        },
        Answer: map[int]string{
            1: "Op1",
        },
    },
}

Тип в составном литеральном выражении может быть исключен только для элементов слайса (так как онс элементами []survey.Question), ключами карты и значениями карты.

Запустите его на игровой площадке Go .

...