【发布时间】:2019-01-09 02:34:30
【问题描述】:
我正在研究 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)
}
【问题讨论】:
-
您在问题中包含的类型有什么问题?您遇到了什么问题?
-
在我看来
amp.preamptubes和amp.powertubes都正确声明为类型tube -
“它不像我写的那样工作” - 怎么回事?你所描述的似乎正是你的代码定义的,所以不清楚问题是什么。
-
昨晚我在处理包时遇到了一个错误,我应该将其包含在问题中。我今天早上重新创建了这个包,它确实显示 powertubes 和 preamptubes 都正确声明了。我怀疑问题出在我如何在主函数中实例化放大器类型。
标签: go data-structures struct