這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
/**data:2015-06-02*author:qdx*note:go語言學習筆記:變數 */package mainimport "fmt"//go 語言的變數類型:/*boolstringint int8 int16 int32 int64uint uint8 uint16 uint32 uint64uintptrbyte(等價於 uint8)rune(等價於 int32,用於表示一個 unicode code point)float32 float64complex64 complex128*///1.go語言中,變數的定義是以var開頭,後接變數名和類型,不能重複定義//a; //報錯,變數未定義//var a; //錯誤,沒有加變數類型,也沒有提供初值(初值可以看做隱藏聲明)var a int = 5;//2.在函數外的任何結構(construct)都通過一個關鍵字開始,例如變//量使用 var 關鍵字開始,函數使用 func 關鍵字開始//a = 6; //報錯,函數體外沒有定義的語句//a := 6; //報錯,:=的左邊沒有定義新變數,函數體外的非定義語句//b := 6; //報錯,函數體外的非定義語句,必須以關鍵字開始//var b := 6; //報錯,語法錯誤,定義變數初始化用“=”,而不是“:=”var b = 6;//g := 9; //報錯,必須以關鍵字開始//3.定義變數時,可以只用一個var,而把所有變數的定義放到小括弧內var (c int = 8;d int = 9;e = 10;f string = "hello";)//var i, j, k = 10, 20; //定義時初始化,左右參數個數必須一致var i, j, k = 10, 20, 30;//var l int, m string; //類型不一致時,不能在同一行內定義//4.函數體內的變數定義可以不以var開始func test(){//b := 8; //函數體內的所有變數必須是被使用的,否則報錯;函數體外的可以定義var a, b int = 10, 20; //函數體內的變數能夠在函數的範圍內覆蓋函數體外的同名變數//var a = 50; //錯誤,函數體內有a重複定義g := 10; //函數體內可以不用var定義變數,此時已經隱藏定義了//g := "hello" //變數定義後,類型就已經確定了;如果需要將不同類型的值賦值給已經定義的變數,需要進行強制類型轉換//g = int(6.5); //報錯,不能將字元常量進行類型轉換var h = 6.5;g = int(h); //對變數進行強制類型轉換正確,變數的類型轉換必須是顯示的T(var)fmt.Println(a);fmt.Println(b);fmt.Println(f);fmt.Println(e+10);//fmt.Println(e+"a"); //報錯fmt.Println(g);}func testConst(){//測試常量//函數體內的常量可以不使用,函數內定義的常量只能在函數內使用,//超出定義常量的函數範圍,常量的範圍消失const Pi = 3.14const (a = 5;c = "golang";)}func main(){test();testConst();fmt.Println("c:",c);return;}