Gox语言中,结构类型(struct)其实并不是很常用,因为Gox语言本身就是动态类型的语言,一般的类似结构体的数据直接用数组或者映射类型就可以了,里面的数据项可以是任意类型,包括嵌套复合类型。因此,Gox语言中的结构体struct一般是为了兼容Go语言中的结构体,以便调用Go语言中已有的库函数或者该结构体的成员函数,但也不是完全不能用普通的结构体,请参看下面的示例。
person1 = make(struct {Name string,Age int})person1.Name = "John"person1.Age = 20pl("%#v", person1)person2 = person1person2.Name ="Tom"pv("person1")pv("person2")url = import ("net/url")tk = import("tk")postValues = make(url.Values)postValues.Set("req", "requestinfo")postValues.Set("A", "123")postValues.Set("B", "xyz")pv("postValues")rs = tk.DownloadPageUTF8("http://topxeq.iego.cn/japi", postValues, "", 15)pv("rs")
这段代码的运行结果是:
首先,Gox语言中没有直接生命结构体的方法,因为作为动态类型的语言,所有类型都是无法声明的,但可以用make函数(也可以用new函数)直接创建一个结构类型,如例子中创建的person1和person2变量,然后就可以用“.”的方法来引用结构体中的成员变量。
可以发现,如果把另一个变量赋值为以后的结构体变量,实际上只是赋值了引用,因为修改person2的值的时候,发现person1中对应的值也发生了一致的变化。
然后,对于Go语言中的结构体,在import相应的包之后,也可以用make函数来创建其中的结构体的实例变量,例如本例中的url.Values,就是在Go语言标准库中“net/url”包中定义的结构体,用于在发送HTTP的POST形式网络请求时传送POST的参数数据。