Могу ли я связать один элемент класса с другим при инициализации в одной строке?
У меня есть класс (структура), как это:
type Question struct{
Question string
answerOne string
answerTwo string
answerCorrect string
}
И я инициализирую это так:
q1:=Question{
Question:"What?",
answerOne:"A",
answerTwo:"B",
answerCorrect: ? //I want this have similar value as `answerOne`
}
Во время инициализации я хочу, чтобы одно из моих значений имело значение, аналогичное другому. Есть ли способ сделать это?
3 ответа
Решение
Вы не можете использовать только литералы, но вы можете определить функцию.
func NewQuestion() *Question {
q := &Question{
Question: "What?",
answerOne: "A",
answerTwo: "B",
}
q.answerCorrect = q.answerOne
return q
}
// ...
q1 := NewQuestion()
Аналог настройки correctAnswer
поле после создания Question
значение, вы можете сохранить правильный ответ в переменной и использовать его дважды в составном литерале:
answerA := "A"
q := Question{
Question: "What?",
answerOne: answerA,
answerTwo: "B",
answerCorrect: answerA,
}
Вы можете создать указатель на структуру и затем присвоить значение переменной структуры answerCorrect
, Наконец, вы можете напечатать указатель структуры valueAt.
package main
import "fmt"
// Question struct for content
type Question struct {
Question string
answerOne string
answerTwo string
answerCorrect string
}
func main() {
question := &Question{
Question: "What?",
answerOne: "A",
answerTwo: "B",
}
// apply condition to chose from the answer
question.answerCorrect = question.answerTwo
fmt.Println(*question)
}