Gox语言中支持Go语言标准库中的大部分,需要使用的时候直接引用即可,无需进行导入或显式声明。例如本例中就用到了Go语言标准库中time包的Now函数获取当前系统时间,然后用到了time包中的Add函数和Sub函数来进行时间的加减操作。注意,Gox语言中约定,一般函数都改成小写字母开头,结构体或成员变量则用大写字母开头,这与Go语言中略有不同,因此Now函数变成了小写开头。另外,如果用到的包是多级的,一般用下面的方式引用:
net_http.Client
即对原为“net/http”包引用的话,需要把斜杠字符换成下划线,变成“net_http”。
如果经尝试没有某个包,可以自行编译Gox的源代码以便加入某些自己需要的包,或者去掉某些不必要的包以减小主程序体积。
引用的第三方包也是类似的规则,唯一特殊的约定是,如果第三方包是在github.com下的,例如github.com/myname/pkgname,则去掉github后的.com,变为github_myname_pkgname。其他的大多数以域名为根目录的名称也是类似的处理方式。tk包是唯一比较特殊的一个包,无需以全名github_topxeq_tk来调用,直接用tk即可,类似的还有github.com/topxeq/sqltk包和github.com/topxeq/imagetk包等。
也可以用自己定义简称来简化对名字较长的包的引用,例如:
t = tk
u = net_url
v = make(u.Values)
v.Set("a", "123")
t.Pl("%#v", v)
代码中分别用变量t和u代替了tk包和net/url包,相对让代码简洁一些,但要注意不要让代码可读性太差了。执行的结果是:
λ gox test.gox
url.Values{"a":[]string{"123"}}