gpt4 book ai didi

go - 如何在 Go 中嵌套结构

转载 作者:数据小太阳 更新时间:2023-10-29 03:39:35 24 4
gpt4 key购买 nike

我正在研究 Go 中的结构、方法和接口(interface),并且正在编写一些代码来测试这些概念。在我正在创建的示例中,我坚持以下概念 - 一些放大器具有前置放大器管和功率管。我以为我可以使用通用管结构在 amp 结构中定义它们,但当然它不会按照我编写的方式工作,而且当我研究嵌套结构时,它们似乎不是适用的概念。我该如何构建它,以便“amp”具有“preamptubes”和“powertubes”,并且它们都是“电子管”类型?

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
}
**编辑:更新:**我应该包括我在问题中遇到的错误。我今天早上重写了程序包,前置放大器和功率管类型现在可以按预期工作。我怀疑问题出在我如何在 main 函数中实例化它们。以下现在有效。这不是生产代码,只是练习概念。感谢您帮助我重新审视它。
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)
}

最佳答案

我可能会误解,但你是在要求嵌套的结构片段吗?为此,只需使用 []tube:

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() {
v := amp{
name: "da amp",
preamptubes: []tube{{model: "A"}},
powertubes: []tube{{model: "B"}},
}

fmt.Printf("%+v\n", v)
}

https://play.golang.org/p/bPGHuEO40D0

这里只是瞎猜,但如果您的值存在于单独的包中,您也可能会遇到 import 问题。将第一个字母更改为大写字母(即 TubeAMP [请参阅 https://github.com/golang/go/wiki/CodeReviewComments#initialisms ))以访问来自不同包的结构。

关于go - 如何在 Go 中嵌套结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54102530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com