日期:2023年7月19日
1、go 在語法上有著類 c 的感覺。如果你希望將兩個(或更多)語句放在一行書寫,它們 必須用分號分隔。一般情況下,你不需要分號。
2、go
同其他語言不同的地方在於變數的型別在變數名的後面。例如:不是,int a,而是 a int。當定義了乙個變數,它預設賦值為其型別的 null
值。這意味著,在 var a int後,a 的 值為 0。而 var s string,意味著 s 被賦值為零長度字串,也就是 ""。
3、go語言的變數宣告和賦值
在go中使用var對變數進行宣告,
例如:var a int
a = 15
var將變數a宣告為int型,然後通過=賦值。
當然在go語言中,我們可以把宣告和賦值過程一步完成,
例如:a := 15(這一形式只可用在函式內)
在這種情況中,變數的型別是由值推演出來的,值15是int的型別的,推演出變數a為int型別。
使用var可以宣告一組變數,
例如:var (
a int
b bool
)如果變數的型別一致,還可以使用var a,b int 這種方式來宣告變數,當然還可以使用這種方式進行宣告和賦值:a,b := 20,16
在go語言中有乙個特殊的變數(_,即下劃線),任何賦給它的值都被丟棄,這將在一些地方變得很有用處。
需要注意的是,go 的編譯器對宣告卻未使用的變數在報錯。
4、go語言的型別
1)布林型別(bool):值可以為true和false
2)數字型別:int,這個型別根據硬體決定,在32位機器上,int是32位的,在64位機器上,int是64位。uint也是如此。
當我們想要明確長度時,可以使用int32(uint32)。完整的整數型別列表(符號和無符號)是
int8,int16,int32,int64 和 byte,uint8,uint16,uint32,uint64。byte 是 uint8
的別名。浮點型別的值有 float32 和 float64 (沒有 float 型別)。64 位的整數和浮點數總是 64 位的,即便是在 32
位的架構上。需要留意的是這些型別全部都是獨立的,並且混合用這些型別向變數賦值會引起編譯 器錯誤。
例如:var a int
var b int32
a = 15
b = a + a//編譯器會報錯,提示(cannot use g + g (type int) as type int32 in assignment)
對於數字型別的賦值,可以使用八進位制、十六進製制或科學計數法:077,0xff,1e3 或者 6.022e23 這些 都是合法的。
3)常量:constant ,常量在編譯時被建立,只能是數字、字串或布林 值。
例如:const (
a = iota
b = iota //iota是乙個列舉值,第一次使用時值為0,下一次使用時值就變為1,每一次使用值都會+1
)const (
a = 0
b bool = true //明確指定常量的型別
)4)字串
字串賦值:s := "hello world!"
字串在 go 中是 utf-8 的由雙引號(」)包裹的字串行。如果你使用單引號(』)則 表示乙個字元(utf-8 編碼),這種在 go 中不是 string 。一旦給變數賦值,字串就不能修改了:在 go 中字串是不可變的。
那麼如何實現改變字串這種操作呢?需要通過下面這種方式:
s := "hello,world!"
m := rune(s)
m[0] = 'c'
s2 := string(m) //實際上只是新建立了乙個字串
fmt.printf("%s\n", s2)
多行字串:
s := "starting part"
+ "ending part"
會被轉換為:
s := "starting part" ;
+ "ending part" ;
這是錯誤的語法,應當這樣寫:
s := "starting part" +
"ending part"
go 就不會在錯誤的地方插入分號。
還可以使用反引號來實現,s := `starting part
ending part`
作為原始字串符,值 在引號內的字元是不轉義的。
5)rune
rune是int32的別名,用 utf-8 進行編碼。這個型別在什麼時候使用呢?例如需要
遍歷字串中的字元。可以迴圈每個位元組(僅在使用 us ascii 編碼字串時與字元等 價,而它們在 go
中不存在!)。因此為了獲得實際的字元,需要使用 rune 型別。
6)複數
go 原生支援複數。它的變數型別是 complex128 (64 位虛數部分)。如果需要小一些 的,還有 complex64 – 32 位的虛數部分。複數寫為 re + imi,re 是實數部分,im 是虛數部分,而 i 是標記
。例如:
var ss complex64 = 5 + 5i
fmt.printf("value is: %v", ss)
列印結果: value is: (5+5i)
7)錯誤
var e error定義了乙個error型別的變數e,其的值是 nil。這個 error 型別是乙個接 口。
5、go語言的運算子
go 支援普通的數字運算子,下圖中列出了當前支援的運算子,以及其優先順序。它們 全部是從左到右結合的。
go語言不支援運算子過載(或者方法過載),而一些內建運算子卻支援過載。例如 + 可以用於整數、浮點數、複數和字串(字串相加表示串聯它們)。
6、go關鍵字
上圖中列出了go中所有的關鍵字,一些已經接觸過,另外一些將在後面介紹。
go語言(二)變數
一 定義賦值 定義乙個int的 var myvar int 定義多個 var myvar,myvar1,myvar2 int 定義並賦予初始值 var myvar int 1 定義多個並賦予初始值 var myvar,myvar1,myvar2 int 1,2,3 麻煩是吧。其實可以簡單 var m...
go學習筆記 二 變數 常量
原始碼檔案以 test結尾 例如 test.go 測試方法名以test開頭 例如 func test xx t testing.t package fib import fmt testing func testfiblist t testing.t fmt.println 裡邊給出了三種賦值方式 ...
Python學習筆記 二 變數型別
list 列表 是 python 中使用最頻繁的資料型別。列表可以完成大多數集合類的資料結構實現。它支援字元,數字,字串甚至可以包含列表 所謂巢狀 列表用 標識。是python最通用的復合資料型別。看這段 就明白。列表中的值得分割也可以用到變數 頭下標 尾下標 就可以擷取相應的列表,從左到右索引預設...