Go語言學習筆記 二 變數 型別 關鍵字

2022-04-10 12:22:45 字數 3050 閱讀 1901

日期: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最通用的復合資料型別。看這段 就明白。列表中的值得分割也可以用到變數 頭下標 尾下標 就可以擷取相應的列表,從左到右索引預設...