在golang中初始化C结构时,结构初始化程序中的值太少

怀亚特(Wyatt):

我尝试了以下程序,但编译时它告诉我“结构初始化器中的值太少”。

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章