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的參數數據。


分享到:


相關文章: