import "C"
func f() {
var vGo int
var vC C.int
// fails to compile with error
// cannot use &vGo (type *int) as type *C.int in argument to...
C.c_function(&vGo)
// compiles just fine:
C.c_function(&vC)
}
I mit CGO_ENABLED = 1 GOARCH = Arm kompilieren ...Was ist der Unterschied zwischen int und C.int in go?
Was in diesem Fall in int und C.int Typen die anders?
Wo finde ich zusätzliche Informationen zu C-Typen in GO?
Sorry, aber der zweite Teil ist nicht korrekt. Go 'int' kann abhängig von der Architektur entweder 64 oder 32 Bit sein. https://golang.org/ref/spec#Numeric_types – jupp0r
@ jupp0r ja, ich habe versucht, das mit "wenn du auf 64bit bist" zu vermitteln, obwohl meine Sprache vielleicht nicht spezifisch genug war. – evanmcdonnal
Der relevante Unterschied ist nicht, dass sie 32 oder 64 Bits sind, sondern dass sie verschiedene Typen sind und Go keine impliziten numerischen Typumwandlungen erlaubt. Sie erhalten den gleichen Fehler unabhängig davon, ob die Typen die gleiche Größe haben oder nicht. – JimB