# aardio 范例: 调用 Go 语言 - 结构体操作



```aardio
//aardio 调用 Go 语言 - 结构体操作 
import console.int;
import golang; 
var go = golang();
 
go.main = /**********
package main

import "C"
import "unsafe"
import "fmt"

//声明结构体
type Point struct { 
  x    int  
  y    int   
}

//export SetPoint 
func SetPoint(p uintptr) {  
	
	// aardio 结构体转换为 Go 结构体
	point := (*Point)(unsafe.Pointer(p)) 
	point.x = 1
	point.y = 2  
	
	/*
	Go 用 fmt.Println 打印变量很方便，可传入多个任意类型的参数。
	*/
	fmt.Println( "在 Go 中打印结构体：",point );
}

func main() {} 
**********/
 
go.buildShared("/.go/TestStruct.go");

//------------------下面调用 DLL----------------------- 
 
var goDll = raw.loadDll("/.go/TestStruct.dll",,"cdecl");
 
//声明结构体 
class Point {
	int x;
	int y;
}

//创建结构体
var point = Point();

//调用 Go 函数，传结构体（结构体总是传址）
goDll.SetPoint(point);

//打印结构体
console.dumpJson(point); 

//结构体就是表（table），也可以这样直接写
goDll.SetPoint({
	int x = 1;
	int y = 2;
});

```

