У меня есть следующий простой тестовый код: call_c.go
package main
/*
int getData(int *p, int n )
{
int i;
for(i=0;i<n;i++) {
p[i]=i;
}
return n;
}
*/
import "C"
import "fmt"
func main() {
var a [5]int32
i := C.getData((*C.int)(&a[0]), 5)
fmt.Println(i, a)
}
Я использую "go build call_c.go" для сборки программы, и она отлично строится.
Но я обнаружил, что если я просто изменю порядок «import fmt», «import C» или добавлю новую строку между кодом блока C /* */ и первым оператором импорта, команда «go build call_c.go» вернет ошибка:
go build call_c.go
37: error: 'getData' undeclared (first use in this function)
Вопросы к знатокам сусликов:
Почему порядок импорта важен в go?
Почему я не могу добавить пробел между блоком C и первым оператором импорта?
Если я снова увижу такую ошибку, как лучше всего ее отладить?