aardio 文档

aardio 范例: 进程参数

//进程参数
import golang;
var go = golang();//创建 Go 编译器( 仅仅调用编译后的 EXE 不需要 )

//Go源码与字符串都是 UTF-8 编码,跟 aardio 一样很方便
go.main  = /****************
package main

import (
    "flag"
    "fmt" 
    "encoding/json" 
)

//结构体,字符后的字符串 tag 可用于辅助 JSON 转换。
type Args struct {
    Num int  `json:"num"`
    Url string  `json:"url"`
    H bool  `json:"h"`
}

//用于获取命令行参数
var args = Args{}

//在 main 函数前执行
func init() { 
    flag.BoolVar(&args.H, "H", false, "帮助")
    flag.IntVar(&args.Num, "num", 0, "请输入数值")
    flag.StringVar(&args.Url, "url", "https://www.aardio.com", "请输入网址")
}

func main() {
    flag.Parse() //解析命令行参数

    if args.H {
        flag.Usage()
    } else { 
        //结构体输出为 JSON
        var jsonParam, _ = json.Marshal(args) 
        fmt.Println(string(jsonParam)) 
    }
}
****************/ 

//编译 Go 源码生成 EXE 文件
go.build("/.go/flag.go");

//-------------------------调用 Go 程序-----------------------

import console.int;
import process.popen;
import process.job.limitKill;

//打开 Go 进程返回管道对象,路径首字符为单个斜杆或反斜杆表示应用程序根目录。
var prcs,err = process.popen("/.go/flag.exe",{
    "--num":123;
    "--url":"https://example.com"
})

//加入作业对象。主进程退出时退出 Go 程序自动退出。
prcs.assignToJobObject(process.job.limitKill);

//读取 Go 程序输出的 JSON,JSON 后必须有换行符
var data = prcs.json();
console.dump(data);

/*
请参考:
范例 > 调用其他语言 > Go > RPC
范例 > 进程 > 管道
*/

Markdown 格式