go語言基礎一(變數常量)
識別符號
在程式語言中識別符號就是程式設計師定義的具有特殊意義的詞,比如變數名、常量名、函式名等等。 Go語言中識別符號由字母數字和_
(下劃線)組成,並且只能以字母和_
開頭。 舉幾個例子:abc
,_
,_123
,a123
。
關鍵字
關鍵字是指程式語言中預先定義好的具有特殊含義的識別符號。 關鍵字和保留字都不建議用作變數名。
Go語言中有25個關鍵字:
break default func interface select case defer go map structchan else goto package switch const fallthrough if range type continue for import return var
此外,Go語言中還有37個保留字。
Constants: true false iota nil Types: int int8 int16 int32 int64uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune string error Functions: make len cap new append copy close delete complex real imag panic recover
變數宣告
標準宣告
Go語言的變數宣告格式為:
var 變數名 變數型別
變數宣告以關鍵字var
開頭,變數型別放在變數的後面,行尾無需分號。 舉個例子:
var name string var age int var isOk bool
批量宣告
每宣告一個變數就需要寫var
關鍵字會比較繁瑣,go語言中還支援批量變數宣告:
var ( a string b int c bool d float32 )
變數的初始化
Go語言在宣告變數的時候,會自動對變數對應的記憶體區域進行初始化操作。每個變數會被初始化成其型別的預設值,例如: 整型和浮點型變數的預設值為0
。 字串變數的預設值為空字串
。 布林型變數預設為false
。 切片、函式、指標變數的預設為nil
。
當然我們也可在宣告變數的時候為其指定初始值。變數初始化的標準格式如下:
var 變數名 型別 = 表示式
舉個例子:
var name string = "Q1mi"
var age int = 18
或者一次初始化多個變數
var name, age = "Q1mi", 20
型別推導
有時候我們會將變數的型別省略,這個時候編譯器會根據等號右邊的值來推導變數的型別完成初始化。
var name = "Q1mi"
var age = 18
短變數宣告
在函式內部,可以使用更簡略的:=
方式宣告並初始化變數。區域性變數聲明後必須使用
package main import ( "fmt" ) // 全域性變數m var m = 100 func main() { n := 10 m := 200 // 此處宣告區域性變數m fmt.Println(m, n) }
匿名變數
在使用多重賦值時,如果想要忽略某個值,可以使用匿名變數(anonymous variable)
。 匿名變數用一個下劃線_
表示,例如:
func foo() (int, string) { return 10, "Q1mi" } func main() { x, _ := foo() _, y := foo() fmt.Println("x=", x) fmt.Println("y=", y) }
匿名變數不佔用名稱空間,不會分配記憶體,所以匿名變數之間不存在重複宣告。 (在Lua
等程式語言裡,匿名變數也被叫做啞元變數。)
注意事項:
- 函式外的每個語句都必須以關鍵字開始(var、const、func等)
:=
不能使用在函式外。_
多用於佔位,表示忽略值。
iota
iota
是go語言的常量計數器,只能在常量的表示式中使用。
iota
在const關鍵字出現時將被重置為0。const中每新增一行常量宣告將使iota
計數一次(iota可理解為const語句塊中的行索引)。 使用iota能簡化定義,在定義列舉時很有用。
舉個例子:
const ( n1 = iota //0 n2 //1 n3 //2 n4 //3 )
常量
相對於變數,常量是恆定不變的值,多用於定義程式執行期間不會改變的那些值。 常量的宣告和變數宣告非常類似,只是把var
換成了const
,常量在定義的時候必須賦值。
const pi = 3.1415
const e = 2.7182
幾個常見的iota
示例:
使用_
跳過某些值
一,變數宣告
1,變數宣告在函式的外部,是全域性變數,必須要以var開頭。
注意函式外部,不能寫語句
可以使用批量宣告
2,函式內部宣告的變數必須使用否則報錯,簡短宣告變數的方式只能用在函式內部
3,常量宣告
宣告時給定初值,省略時,下一行的常量值等於上一行的值。
4,ioto常量計數器
遇到const關鍵字ioto的值為0
每一行常量宣告,ioto+1
二,為了處理非ASCII碼,提出了rune型別,本質就是int32的陣列,裡面存放的是ASCII碼值
byte型別,本質就是int8的陣列,用來對字串進行但字元操作。
注意,字串是一種基本型別,不能對單個字元操作,必須轉換為上面的兩種型別,後才可以
三,沒有隱式型別轉換,只有顯示轉換。
執行go程式時候的命令
(1)go build
1,在專案的目錄下執行go build
2,在其他目錄下執行go build ,需要在後面新增路徑(路徑要從GOPATH的src目錄下開始)
go build 是將其編譯成可執行的二進位制檔案
3,給編譯成的可執行二進位制檔案指定名稱
go build -o 指定名稱
(2)go run
像腳步語言一樣執行go程式
(3)go install
分為2步,將go程式編譯成可執行檔案,再將檔案拷貝到GOPATH/bin下
(4)支援跨平臺編譯