在golang中初始化C结构时,struct initializer中的值太少

前端之家收集整理的这篇文章主要介绍了在golang中初始化C结构时,struct initializer中的值太少前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经尝试了以下程序,但它在编译时告诉我“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)
}

我该如何解决这个有线问题?
另外,当我将类型“char *”更改为“char”和初始化程序时.它运作良好.

struct Person {
    char name;
    int age;
    int height;
    int weight;
};

另外,当我使用时

struct Person {
    char *name;
};

它也运作良好.

无论如何,我该如何解决?谢谢.

请尝试将字段名称放在struct literal中.
person := p{name: C.CString("Giorgis"),age: 30,height: 6,weight: 175}

这是因为在名称和年龄之间插入了一个匿名的4字节padding字段.

猜你在找的Go相关文章