小编bot*_*tob的帖子

如何在cgo中访问全局变量?

结构的内存已经分配。

我想在 golang 中接近 C 结构。

我想在没有c代码的情况下访问golang中的struct变量,我该怎么办?

package main

/*
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct 
{
        int   num;
        char  food[10];
        char  animal[128];
} sample;

sample *sa;

static void alloc() {
        sa = (sample *) malloc (sizeof(sample) * 2);
        memset(sa, 0, sizeof(sample) * 2);

        sa[0].num = 10;
        strcpy(sa[0].food, "noodle");
        strcpy(sa[0].animal, "cat");

    sa[1].num = 20;
    strcpy(sa[1].food, "pizza");
    strcpy(sa[1].animal, "dog");
}

*/
import "C"

import "fmt"

func init() {
        C.alloc()
}
func main() {
        fmt.Println(C.sa[0].num)
        fmt.Println(C.sa[0].food)
        fmt.Println(C.sa[0].animal)

        fmt.Println(C.sa[1].num)
        fmt.Println(C.sa[1].food)
        fmt.Println(C.sa[1].animal) …
Run Code Online (Sandbox Code Playgroud)

go cgo

5
推荐指数
1
解决办法
576
查看次数

标签 统计

cgo ×1

go ×1