J'ai essayé:
const ascii = "abcdefghijklmnopqrstuvwxyz"
const letter_goodness []float32 = { .0817,.0149,.0278,.0425,.1270,.0223,.0202, .0609,.0697,.0015,.0077,.0402,.0241,.0675, .0751,.0193,.0009,.0599,.0633,.0906,.0276, .0098,.0236,.0015,.0197,.0007 }
const letter_goodness = { .0817,.0149,.0278,.0425,.1270,.0223,.0202, .0609,.0697,.0015,.0077,.0402,.0241,.0675, .0751,.0193,.0009,.0599,.0633,.0906,.0276, .0098,.0236,.0015,.0197,.0007 }
const letter_goodness = []float32 { .0817,.0149,.0278,.0425,.1270,.0223,.0202, .0609,.0697,.0015,.0077,.0402,.0241,.0675, .0751,.0193,.0009,.0599,.0633,.0906,.0276, .0098,.0236,.0015,.0197,.0007 }
Premièrement, la déclaration et l'initialisation fonctionnent bien, mais les deuxième, troisième et quatrième ne fonctionnent pas. Comment puis-je déclarer et initialiser un tableau const de flottants?
[...]T
syntaxe est pour le sucre[123]T
. Il crée un tableau de taille fixe, mais laisse le compilateur déterminer le nombre d'éléments qu'il contient.f(xs [5]int)
vous ne saurez pas si le tableau passé est constant ou mutable.cannot use constants.FilesRequired (type [4]string) as type []string in argument to strings.Join
De Effective Go :
Les tranches et les tableaux sont toujours évalués lors de l'exécution:
[...]
indique au compilateur de déterminer la longueur du tableau lui-même. Les tranches enveloppent les tableaux et sont plus faciles à utiliser dans la plupart des cas. Au lieu d'utiliser des constantes, rendez simplement les variables inaccessibles aux autres packages en utilisant une première lettre minuscule:thisIsPrivate
est disponible uniquement dans le package défini. Si vous avez besoin d'un accès en lecture de l'extérieur, vous pouvez alors écrire une simple fonction getter (voir Getters en golang ).la source
Il n'y a pas de constante de tableau dans Go.
Citations de la spécification du langage Go: Constantes :
Une expression Constante (utilisée pour initialiser une constante) peut contenir uniquement des opérandes constants et est évaluée au moment de la compilation.
La spécification répertorie les différents types de constantes. Notez que vous pouvez créer et initialiser des constantes avec des expressions constantes de types ayant l'un des types autorisés comme type sous- jacent . Par exemple ceci est valide:
Sortie (essayez-le sur le Go Playground ):
Si vous avez besoin d'un tableau, il ne peut s'agir que d'une variable, mais pas d'une constante.
Je recommande cet excellent article de blog sur les constantes: Constantes
la source
var arr = [2]int{2, 3}
Comme d'autres l'ont mentionné, il n'y a pas de construction officielle de Go pour cela. Le plus proche que je puisse imaginer serait une fonction qui renvoie une tranche. De cette manière, vous pouvez garantir que personne ne manipulera les éléments de la tranche d'origine (car elle est "codée en dur" dans le tableau).
J'ai raccourci votre tranche pour la rendre ... plus courte ...:
la source
cannot use [6]string literal (type [6]string) as type []string in return argument
soreturn []float32 { ... }
...
afin de déclarer un littéral de tranche au lieu d'un littéral de tableau. (2) changez le type de retour en[6]float32
. (3) attribuer à l'expression d' une variable de réseau,a := [...]float32 { (etc.) }
et renvoyer la tranche de tous les éléments:return a[:]
. (Les littéraux de tableau ne sont pas adressables, je ne sais pas pourquoi.)