Gox语言中的结构类型-GX6

Gox语言中的结构类型-GX6

Gox语言中,结构类型(struct)其实并不是很常用,因为Gox语言本身就是动态类型的语言,一般的类似结构体的数据直接用数组或者映射类型就可以了,里面的数据项可以是任意类型,包括嵌套复合类型。因此,Gox语言中的结构体struct一般是为了兼容Go语言中的结构体,以便调用Go语言中已有的库函数或者该结构体的成员函数,但也不是完全不能用普通的结构体,请参看下面的示例。


<code>person1 = make(struct {
\tName string,
\tAge int
})

person1.Name = "John"
person1.Age = 20

pl("%#v", person1)

person2 = person1

person2.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")
/<code>

这段代码的运行结果是:

Gox语言中的结构类型-GX6

首先,Gox语言中没有直接生命结构体的方法,因为作为动态类型的语言,所有类型都是无法声明的,但可以用make函数(也可以用new函数)直接创建一个结构类型,如例子中创建的person1和person2变量,然后就可以用“.”的方法来引用结构体中的成员变量。

可以发现,如果把另一个变量赋值为以后的结构体变量,实际上只是赋值了引用,因为修改person2的值的时候,发现person1中对应的值也发生了一致的变化。

然后,对于Go语言中的结构体,在import相应的包之后,也可以用make函数来创建其中的结构体的实例变量,例如本例中的url.Values,就是在Go语言标准库中“net/url”包中定义的结构体,用于在发送HTTP的POST形式网络请求时传送POST的参数数据。


分享到:


相關文章: