Я работаю над структурами, методами и интерфейсами в Go и пишу некоторый код для проверки концепций. В примере, который я создаю, я застрял на следующей концепции: у некоторых усилителей есть предусилительные и силовые. Я думал, что смогу определить их в структуре amp, используя общую структуру ламп, но, конечно, это не работает так, как я это написал, и когда я исследую вложенные структуры, они, кажется, не применимы. Как мне структурировать это так, чтобы у «amp» были «preamptubes» и «powertubes», и каждый из них - это «tube»?
type tube struct {
model string
number int8
}
type amp struct {
name string
model string
manufacturer string
color string
knobs int8
switches int8
jacks int8
preamptubes tube
powertubes tube
ouputpower int8
fxloop bool
}
** Редактировать: Обновить: **
Я должен был включить ошибку, которую я получил в вопросе. Этим утром я переписал пакет, и типы предусилителей и ламповых ламп теперь работают как положено. Я подозреваю, что проблема была в том, как я выполнял их создание в основной функции. Следующее сейчас работает. Это не производственный код, а упражнение для отработки концепций. Спасибо, что помогли мне по-новому взглянуть на это.
package main
import "fmt"
type tube struct {
model string
number int8
}
type amp struct {
name string
model string
manufacturer string
color string
knobs int8
switches int8
jacks int8
preamptubes tube
powertubes tube
ouputpower int8
fxloop bool
}
func main() {
a := amp{
name: "MegaAmp",
model: "MA9000",
manufacturer: "Amps R Us",
color: "blonde",
knobs: 9,
switches: 5,
jacks: 6,
preamptubes: tube{
model: "12AX7",
number: 3},
powertubes: tube{
model: "6V6",
number: 4},
fxloop: true}
fmt.Println(a)
fmt.Println(a.preamptubes.model)
}