Sembra che si sta tentando di utilizzare (quasi) verso l'alto codice C qui. Go ha alcune differenze.
- Prima di tutto, non è possibile inizializzare matrici e sezioni come
const
. Il termine const
ha un significato diverso in Go, come in C. L'elenco deve essere definito come var
.
- In secondo luogo, come regola di stile, Go preferisce
basenameOpts
anziché basename_opts
.
- Non c'è il tipo
char
in Go. Probabilmente si desidera byte
(o rune
se si intende consentire codepoint unicode).
- In questo caso la dichiarazione della lista deve avere l'operatore di assegnazione. Es .:
var x = foo
.
- Il parser di Go richiede che ogni elemento di una dichiarazione di lista termini con una virgola. Questo include l'ultimo elemento. Il motivo è perché Go inserisce automaticamente i punti e virgola , se necessario. E questo richiede una sintassi un po 'più rigida per funzionare.
Ad esempio:
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",
},
}
Un'alternativa è dichiarare la lista al suo tipo e quindi utilizzare una funzione init
per riempirlo. Ciò è utile soprattutto se si intende utilizzare i valori restituiti dalle funzioni nella struttura dati. Le funzioni init
vengono eseguite quando il programma viene inizializzato e sono garantite per il completamento prima che venga eseguito main
. È possibile avere più funzioni init
in un pacchetto o anche nello stesso file sorgente.
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",
},
)
}
Dal momento che sei un nuovo Go, vi raccomando vivamente la lettura attraverso the language specification. È piuttosto breve e scritto molto chiaramente. Cancellerà molte di queste piccole idiosincrasie per te.