我是 Go 的新手。这个问题让我发疯。你如何在 Go 中初始化结构数组?
type opt struct { shortnm char longnm, help string needArg bool } const basename_opts []opt { opt { shortnm: 'a', longnm: "multiple", needArg: false, help: "Usage for a"} }, opt { shortnm: 'b', longnm: "b-option", needArg: false, help: "Usage for b"} }
编译器说,它预期;后[]opt。
;
[]opt
我应该把大括号放在哪里{来初始化我的结构数组?
{
看起来您正在尝试在这里使用(几乎)直接的 C 代码。Go 有一些不同之处。
const
var
basenameOpts
basename_opts
char
byte
rune
var x = foo
例如:
type opt struct { shortnm byte longnm, help string needArg bool } var basenameOpts = []opt { opt { shortnm: 'a', longnm: "multiple", needArg: false, help: "Usage for a", }, opt { shortnm: 'b', longnm: "b-option", needArg: false, help: "Usage for b", }, }
另一种方法是用它的类型声明列表,然后使用一个init函数来填充它。如果您打算使用数据结构中的函数返回的值,这非常有用。init函数在程序初始化时运行,并保证在main执行之前完成。您可以init在一个包中拥有多个函数,甚至可以在同一个源文件中。
init
main
type opt struct { shortnm byte longnm, help string needArg bool } var basenameOpts []opt func init() { basenameOpts = []opt{ opt { shortnm: 'a', longnm: "multiple", needArg: false, help: "Usage for a", }, opt { shortnm: 'b', longnm: "b-option", needArg: false, help: "Usage for b", }, } }
由于您是 Go 的新手,我强烈建议您通读语言规范。它很短,写得很清楚。它将为您清除许多这些小特质。