aardio 文档
aardio 范例:字符串
//字符串
import golang;
var go = golang();
go.main = /**********
package main
import "C"
import "fmt"
//export TestString
func TestString(str string) {
fmt.Printf("Go 直接收到 aardio 字符串: %s!\n", str) ;
}
//export TestStringPtr
func TestStringPtr(str *string) {
fmt.Printf("Go 通过 *string 收到 aardio 字符串: %s!\n", *str) ;
*str = "这是新的字符串";
}
//export TestCCharPtr
func TestCCharPtr(pStr *C.char) {
//aardio 字符串指针转换为 Go 字符串
var str = C.GoString(pStr);
//Go 包公开的函数首字母必须是大写。
fmt.Printf("Go 通过 *C.char 收到 aardio 字符串: %s\n", str)
}
func main() {}
**********/
go.buildShared("/.go/TestString.go");
//------------------下面调用 DLL-----------------------
import console.int;
var goDll = raw.loadDll("/.go/TestString.dll",,"cdecl");
/*
传一个字符串 + 一个字符串长度,
2 个参数就等价于 Go 中一个 string 类型参数
*/
var str = "2 个参数就等价于 Go 中一个 string 类型参数"
goDll.TestString(str,#str);//不要在 Go 中保存 aardio 传过去的字符串
//创建 Go 字符串结构体
import golang.string;
var goStr = golang.string("这是 aardio 字符串,UTF-8 编码");
//在 Go 里这个参数应当声明为 *string 指针类型(aardio 结构体总是传址)
goDll.TestStringPtr(goStr);//不要在 Go 中保存 aardio 传过去的字符串
/*
如果 Go 代码里修改了字符串。
那么在调用后应立即转换为 aardio 字符串(因为 Go 会回收内存)。
只要转换一次,golang.string 内部就会重新指向 aardio 分配的内存。
*/
var str = tostring(goStr);
console.log(goStr,str);
//传 C 指针,这是原始的方法
goDll.TestCCharPtr("这是 aardio 字符串,UTF-8 编码");
Markdown 格式