我尝试了以下程序,但编译时它告诉我“结构初始化器中的值太少”。
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)
}
如何解决此有线问题?另外,当我更改类型时,将“ char *”更改为“ char”,然后进行初始化。效果很好。
struct Person {
char name;
int age;
int height;
int weight;
};
另外,当我使用
struct Person {
char *name;
};
它也很好。
无论如何,我该如何解决?谢谢。
请尝试将字段名称放在结构文字中。
person := p{name: C.CString("Giorgis"), age: 30, height: 6, weight: 175}
这是因为在名称和年龄之间插入了一个匿名的4字节填充字段。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句