猿问

在 golang 中初始化 C 结构时,结构初始值设定项中的值太少

我已经尝试了以下程序,但它在编译时告诉我“结构初始值设定项中的值太少”。


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;

};

它也很好用。


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


侃侃无极
浏览 217回答 1
1回答

翻阅古今

请尝试将字段名称放在您的结构文字中。person&nbsp;:=&nbsp;p{name:&nbsp;C.CString("Giorgis"),&nbsp;age:&nbsp;30,&nbsp;height:&nbsp;6,&nbsp;weight:&nbsp;175}这是因为在姓名和年龄之间插入了一个匿名的 4 字节填充字段。
随时随地看视频慕课网APP

相关分类

Go
我要回答