Pourquoi ça ne marche pas?
package main
import "fmt"
type name struct {
X string
}
func main() {
var a [3]name
a[0] = name{"Abbed"}
a[1] = name{"Ahmad"}
a[2] = name{"Ghassan"}
nameReader(a)
}
func nameReader(array []name) {
for i := 0; i < len(array); i++ {
fmt.Println(array[i].X)
}
}
Erreur:
.\structtest.go:15: cannot use a (type [3]name) as type []name in function argument
Vous avez défini votre fonction pour accepter une tranche comme argument, pendant que vous essayez de passer un tableau lors de l'appel à cette fonction. Il existe deux façons de résoudre ce problème:
Créez une tranche hors du tableau lors de l'appel de la fonction. Changer l'appel comme ça devrait suffire:
nameReader(a[:])
Modifiez la signature de la fonction pour prendre un tableau au lieu d'une tranche. Par exemple:
func nameReader(array [3]name) {
...
}
Les inconvénients de cette solution sont que la fonction ne peut désormais accepter qu'un tableau de longueur 3, et une copie du tableau sera faite lors de son appel.
Vous pouvez trouver plus de détails sur les tableaux et les tranches, et les pièges courants lors de leur utilisation ici: http://openmymind.net/The-Minimum-You-Need-To-Know-About-Arrays-And-Slices-In-Go /
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots