這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
1.1GO語言的安裝
連結:http://pan.baidu.com/s/1hsjkmSO 密碼:5m1f
然後一路狂點安裝。。。
最後在CMD中
已經成功安裝。。。
1.2GO語言之順序編程
呃,GO語言和C++之類的語言有點不同。
1.2.1聲明:首先體現在變數的聲明上
C:int x;
GO:var x int
C:int x,y,z;
GO:var{
x int
y int
z int
}
說明幾點如下:
a.GO語言的花括弧左邊必須跟著在同一行。不能另外起一行。
GO語言中變數的聲明沒有C/C++那樣的瑣碎,C/C++中變數有什麼private,public之類的訪問屬性限制,而在GO語言中,變數首字母如果是小寫則是private屬性的,如果是函數則會被聲明成inline,要是無法inline,就會聲明成static。而大寫就相當於public和全域的….這是一條相當重要的性質。。。
b.聲明和定義的區別:聲明只是聲明了一個符號,並未真正佔用儲存空間,而定義則真正真實在記憶體中佔用了一定位元組。
c.呃,對於C來說,則並非如此…..C語言中聲明了一個變數則必定在函數棧幀上佔用一些位元組。。。而GO中聲明則是聲明,並不會佔用位元組數。
1.2.2定義
C:int x = 10;
GO :
var x = 10 //自動推匯出int類型
var x int = 10
x := 10//自動推導 :=僅用於定義且初始化,如果左邊的符號是定義過的,則會編譯出錯。
又要說幾點的時候到了。
A.GO語言是一種強型別語言,和C語言一樣,沒有所謂的弱類型語言的特點。。。。
B.多重賦值功能。。。。C/C++程式員羨慕不已的功能
x1,x2….xn = y1,y2,y3…yn
類似上面那樣的語句就是多重賦值的功能。。。呃,至於多重賦值有什麼用…..方便編程,,比如x,y = y,x這樣簡單一句就可以完成了交換兩個數的功能。酷炫吧?
C.返回多個函數值,也許這部份對於C/C++經常用的人就能感覺到這種東西帶來的好處,對於C/C++語言來說,要是想讓函數返回多個值,要麼是搞什麼結構體返回結構體要麼是傳一個指標或者是引用作為參數傳進去,這樣大大的加大了程式的可閱讀性。如果是使用過matlab或者是其他語言就會知道函數返回多個傳回值的好處了
而對於GO來說,恰好引進了這個功能。
函式宣告
function GetName() (firstname,lastname,name string){
return “aaa”,”bbb”,”ccc”;
}
而接收第三個參數可以這樣寫
,,name = GetName()
1.2.3常量
a.字面常量比如10,10.0,“helloworld”之類的已經寫死的東西,或者說是字面常量,他們的類型是無類型,呃,這個好處有什麼呢。。。。這個主要是因為是GO語言不提供隱式類型轉換,在他們眼中,甚至uint和int之間無法自動類型轉換,除非程式員自動用強制類型轉換(使用方法和C語言完全類似)。這時候,如果常量10表示int類型,那麼它就無法賦值給uint類型的變數!!!除非加上了強制類型轉換。
b.常量的賦值是編譯期的事情,因此不能把函數的傳回值給常量。呃,具體解釋也可以如此解釋。因為常量存放在.rodata段,具體想瞭解的請自行去閱讀程式員的自我修養,那本書有一定的涉及,而對於段上的資料,是在可執行檔中有一定體現的,或者說,經過編譯連結之後,這東西必須寫死寫入到可執行檔中去。所以自然是必須要在編譯期確定。(核心:和常量的儲存位置有關)
c.特殊的變數,true,false,itoa;
只說一下itoa吧,
const{
x = itoa
y
z}
//x = 0 y = 1 z =2就這樣。。。。自動成長,這玩意兒沒什麼的
…….
**位元運算:**GO語言中的取反是^x這樣用
新的類型:complex表複數類型。。。。