標籤:UI unix 語言 標準 blog channel 編譯器 快速 複數
一、區別於其他語言的特點:清晰並且簡潔、並行(線和 goroutines)、Channel、快速、安全、標準格式化、類型後置(var a int)、UTF-8、開源、開心Erlang[7] 與 Go 在部分功能上類似。Erlang 和 Go 之間主要的區別是 Erlang 是函 數式語言,而 Go 是命令式的。Erlang 運行在虛擬機器上,而 Go 是編譯的。Go 用 起來感覺更接近 Unix 二、Hello Worldpackage mainimort "fmt" // 實現格式化的I/O/*Print something*/func main(){fmt.Printf("Hello,word\n");} 註:packagemain必須首先出現,緊跟著是import。在Go中,package總是首先出現, 然後是 import,然後是其他所有內容。當 Go 程式在執行的時候,首先調用的函 數是 main.main(),這是從 C 中繼承而來。 編譯和運行代碼%go build helloworld.go會產生一個叫helloworld 的可執行檔%./hellowordHello,world 三、變數 ,要先聲明後賦值var a int 聲明a =15 賦值等同於a :=15 直接聲明並賦值 多個變數:var (x intb bool)或者如果都是 整型,可以聲明var a,b int平行賦值 a, b := 20, 16 註: 如果你希望將兩個(或更多)語句放在一 行書寫,它們必須用分號 (’;’) 分隔。一般情況下,你不需要分號一個特殊的變數名是 _(底線)。任何賦給它的值都被丟棄。在這個例子 中,將 35 賦值給 b,同時丟棄 34。_, b := 34, 35Go 的編譯器對聲明卻未使用的變數在報錯 四、變數類型1、布爾類型 true 和 false2、數字類型int ,你可以使用 int32 或者 uint32。完整的整數類型列表 (符號和無符號)是 int8,int16,int32,int64 和 byte,uint8,uint16,uint32, uint64。 byte 是 uint8 的別名。浮點類型的值有 float32 和 float64 註:賦值可以用八進位、十六進位或科學計數法: 077,0xFF,1e3 或者 6.022e23 這 些都是合法的。 3、常量const x=4const (a = 0 ← Is an int now b string = "0") 4、字串s := "Hello World!" 必須是雙引號或者 var s string = "hello"註: 一旦給變數賦值,字串就不能修改了多行字串:s := "Starting part" + "Ending part"會被轉換為:s := "Starting part";+ "Ending part";這是錯誤的文法,應當這樣寫:s := "Starting part" + "Ending part"另一種方式是使用反引號 ` 作為原始字元 串符號:s := `Starting part Ending part` 另:runeRune 是 int32 的別名。用 UTF-8 進行編碼。這個類型在什麼時候使用呢?例如需 要遍曆字串中的字元。可以迴圈每個位元組(僅在使用 US ASCII 編碼字串時 與字元等價,而它們在 Go 中不存在!)。因此為了獲得實際的字元,需要使用 rune 類型。 5、複數它的變數類型是 complex128 (64 位元虛數部分)。如果需要小 一些的,還有 complex64 – 32 位的虛數部分。複數寫為 re + imi,re 是實數部分, im 是虛數部分,而 i 是標記 ’i’ (√?1)。使用複數的一個例子:var c complex64 = 5+5i;fmt.Printf("Value is: %v", c) 將會列印:(5+5i) 6、錯誤Go 有為了錯誤而 存在的內建類型,叫做 error。 var a error 定義了 a 為一個 error,a 的值是 nil。 五、運算子和內建函數 + - * / 和% 會像你期望的那樣工作,& | ^ 和&^ 分別表示位元運算符按位與, 按 位或,按位異或和位清除。 && 和 || 運算子是邏輯與和邏輯 或。表格中沒有列 出的是邏輯非:!。雖然 Go 不支援運算子多載(或者方法重載),而一些內建運算子卻支援重載。 Go 保留字:
Go 語言基礎(一)