一、GO文法結構
1.示例代碼 package main //包聲明,必須出現在源檔案第一行,指明檔案處于哪個包 import "fmt" //引入檔案中需要的封包件 func main() { //檔案執行入口 //注釋格式,同普通C格式 fmt.Println("Hello, World!") //主要代碼功能區 } ## 辨別符 1)當辨別符以 大寫字母 開頭,則可被外部包通路 2)當辨別符以 小寫字母 開頭,則僅可被内部包通路 ## 注意事項 1)“{”不能單獨放在一行,會出現運作時錯誤 2)檔案名與包名并無直接關系,并非需要一緻 3)同一個檔案夾下的檔案隻能有一個包名,否則編譯報錯 4)代碼子產品每行可以不寫分号,當同行有多句代碼時需要用分号間隔 2.GO代碼的執行 1)go run 檔案名 //執行代碼 2)go build 檔案名 //編譯生成二進制檔案
二、語言基礎文法
1.标記:GO程式由多個标記組成,标記是代碼中可以拆解的最小的有意義的機關,如:關鍵字、辨別符、常量、字元串、符号等 如:fmt.Println("Hello, World!") 分解為:fmt . Println ( "Hello, World!" ) 2.行分隔符 1)每行隻有一個語句的時候可以不寫任何分隔符 2)需同行寫多句代碼時,需用分号間隔 3.辨別符規範 1)由字母、數字、下劃線組成 2)第一個字元必須是字母或下劃線 3)關鍵字不能作為辨別符 4.字元串 1)字元串:是由雙引号括起的一段字元序列 2)轉義字元:換行符 \n、回車符 \r、tab鍵 \t、Unicode字元 \u、反斜杠 \\ 3)字元串拼接:使用“+”或“+=”可以完成字元串拼接 4)字元串是一種值類型,且值不可變,即建立某個文本後你無法再次修改這個文本的内容;更深入地講,字元串是位元組的定長數組。 5.變量 (1)單變量聲明 1)指定變量類型不指派,則變量預設為零(沒有初始化時系統預設的值) 如:var name type 各類型零值:數值類型:0、bool:false、字元串:“”、複雜資料類型:指針/數組/字典等:null 2)不指定變量類型,指定初值,根據初值自行判定資料類型 如:var name = value 3)使用“:=”可以聲明新的變量,而不用使用var,但對已有變量指派時會報錯 如正确聲明: name1 := value //name1從未被定義 如錯誤聲明:var name2 = value2;name2 := value3 ##注意 := 操作符隻能用于函數體内部,不能使用者全局變量的聲明與指派 (2)多變量聲明 1)類型相同的多個變量聲明 如: var name1,name2,name3 type; name1,name2,name3=value1,value2,value3 2)類型不同的多個變量聲明 如:var(name1 type1;name2 type2……) (3)值類型和引用類型 1)基本資料類型均屬于值類型:int、float、bool、string,直接指向記憶體在記憶體中的值 a. 可以通過print直接輸出變量值:fmt.Println(i) b. 可以通過&獲得變量位址:fmt.Println(&i) c. 将一個變量賦給另一個變量時,是對值進行了拷貝賦在了新的記憶體位址中 6.常量 (1)常量:在程式運作過程中不會被修改的量 如:const name [type] = value 顯式類型定義:const b string ="abc" 隐式類型定義:const b = "abc" 1)常量枚舉定義 const ( Unknown = 0 Female = 1 Male = 2 ) (2)iota:可以變化的特殊常量,系統自定義 iota 在 const關鍵字出現時将被重置為 0(const 内部的第一行之前),const 中每新增一行常量聲明将使 iota 計數一次(iota 可了解為 const 語句塊中的行索引)。 測試代碼
package main
import "fmt"
func main(){
fmt.Println("Hello, World!");
fmt.Println("Hello, World22!")
//轉義字元相關
/*fmt.Print("\n")
fmt.Print("\r")
fmt.Print("\t")
fmt.Print("\u")
fmt.Print("\\")
*/
//驗證省略var時必須聲明全新的變量
//var vname1, vname2, vname3 = "1", "2", "3" // 和 python 很像,不需要顯示聲明類型,自動推斷
//nvname1, nvname2, nvname3 := "1", "2", "3" // 出現在 := 左側的變量不應該是已經被聲明過的,否則會導緻編譯錯誤
var i,j int;
i = 1;
j = i;
fmt.Println(i);
fmt.Println(j)
fmt.Println(&i)
fmt.Println(&j)
}