我尝试过以下程序,但它告诉我" struct initializer中的值太少"在编译时。
package main
/*
#include <stdlib.h>
struct Person {
char *name;
int age;
int height;
int weight;
};
*/
import "C"
import "fmt"
type p C.struct_Person
func main() {
person := p{C.CString("Giorgis"), 30, 6, 175}
fmt.Println(person)
fmt.Println(C.GoString(person.name))
fmt.Println(person.age)
fmt.Println(person.height)
fmt.Println(person.weight)
}
如何修复此有线问题? 另外,当我改变类型&#34; char *&#34; to&#34; char&#34;和初始化程序。效果很好。
struct Person {
char name;
int age;
int height;
int weight;
};
另外,当我使用
时struct Person {
char *name;
};
它也很有效。
无论如何,我该如何解决?感谢。
答案 0 :(得分:3)
请尝试将字段名称放在struct literal中。
person := p{name: C.CString("Giorgis"), age: 30, height: 6, weight: 175}
这是因为在名称和年龄之间插入了一个匿名的4字节padding字段。