go語言入門 二

2022-07-04 00:06:12 字數 3082 閱讀 3411

go 語言變數名由字母、數字、下劃線組成,其中首個字母不能為數字。

宣告變數的一般形式是使用 var 關鍵字:

varidentifier type

第一種,指定變數型別,宣告後若不賦值,使用預設值。

varv_name v_type

v_name =value

第二種,根據值自行判定變數型別。

varv_name =value

第三種,省略var, 注意 :=左側的變數不應該是已經宣告過的,否則會導致編譯錯誤。

v_name :=value

vara int=10varb =10c :=10

//型別相同多個變數, 非全域性變數varvname1,vname2,vname3 type

vname1,vname2,vname3 =v1,v2,v3

varvname1,vname2,vname3 =v1,v2,v3 //和python很像,不需要顯示宣告型別,自動推斷vname1,vname2,vname3 :=v1,v2,v3 //出現在:=左側的變數不應該是已經被宣告過的,否則會導致編譯錯誤// 這種因式分解關鍵字的寫法一般用於宣告全域性變數var(vname1 v_type1

vname2 v_type2

)

所有像 int、float、bool 和 string 這些基本型別都屬於值型別,使用這些型別的變數直接指向存在記憶體中的值。當使用等號=將乙個變數的值賦值給另乙個變數時,如:j = i,實際上是在記憶體中將 i 的值進行了拷貝,你可以通過 &i 來獲取變數 i 的記憶體位址,例如:0xf840000040(每次的位址都可能不一樣)。值型別的變數的值儲存在棧中。

乙個引用型別的變數 r1 儲存的是 r1 的值所在的記憶體位址,或記憶體位址中第乙個字所在的位置。這個記憶體位址為稱之為指標,這個指標實際上也被存在另外的某乙個字中。同乙個引用型別的指標指向的多個字可以是在連續的記憶體位址中(記憶體布局是連續的),這也是計算效率最高的一種儲存形式;也可以將這些字分散存放在記憶體中,每個字都指示了下乙個字所在的記憶體位址。

當使用賦值語句 r2 = r1 時,只有引用(位址)被複製。如果 r1 的值被改變了,那麼這個值的所有引用都會指向被修改後的內容,在這個例子中,r2 也會受到影響。

如果你宣告了乙個區域性變數卻沒有在相同的**塊中使用它,同樣會得到編譯錯誤,例如下面這個例子當中的變數 a:

package main

import "fmt"

func main()

嘗試編譯這段**將得到錯誤a declared and not used。這個值必須被使用,所以使用 fmt.println("hello, world",a) 

會移除錯誤。

但是全域性變數是允許宣告但不使用。 同一型別的多個變數可以宣告在同一行,如:

vara,b,c int

多變數可以在同一行進行賦值,稱之為並行賦值,如:

a,b,c =5,7,"abc"

如果你想要交換兩個變數的值,則可以簡單地使用 a, b = b, a。

空白識別符號 _ 也被用於拋棄值,如值 5 在:_, b = 5, 7 中被拋棄。

_ 實際上是乙個只寫變數,你不能得到它的值。這樣做是因為 go 語言中你必須使用所有被宣告的變數,但有時你並不需要使用從乙個函式得到的所有返回值。

並行賦值也被用於當乙個函式返回多個返回值時,比如這裡的 val 和錯誤 err 是通過呼叫 func1 函式同時得到:val, err = func1(var1)。

常量是乙個簡單值的識別符號,在程式執行時,不會被修改的量。常量中的資料型別只可以是布林型、數字型(整數型、浮點型和複數)和字串型。

常量的定義格式:

constidentifier [type]=value

你可以省略型別說明符 [type],因為編譯器可以根據變數的值來推斷其型別。

多個相同型別的宣告可以簡寫為:

constc_name1,c_name2 =value1,value2

常量還可以用作列舉:

const(unknown=0female=1male=2)

常量可以用len(), cap(), unsafe.sizeof()函式計算表示式的值。常量表示式中,函式必須是內建函式,否則編譯不過:

package main

import "unsafe"

const (

a = "abc"

b = len(a)

c = unsafe.sizeof(a)

)func main()

以上例項執行結果為:

abc 316

運算子用於在程式執行時執行數學或邏輯運算。go 語言內建的運算子有:

算術運算子有加+,減-,乘*,除/,自增++,自減--

關係運算子有相等==,不等!=,大於》,小於<,大於等於》=,小於等於<=

邏輯運算子有與&&,或||,非!

位運算子對整數在記憶體中的二進位制位進行操作。位運算子有位與 &,位或 |,和異或 ^ ,左移運算<<,右移運算子》。

左移運算子"<<"是雙目運算子。左移n位就是乘以2的n次方。 其功能把"<<"左邊的運算數的各二進位全部左移若干位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0。

右移運算子">>"是雙目運算子。右移n位就是除以2的n次方。 其功能是把">>"左邊的運算數的各二進位全部右移若干位,">>"右邊的數指定移動的位數。高位補上符號位。

go支援增強賦值運算,如 +=,-=等

取位址運算子&

指標運算子*

有些運算子擁有較高的優先順序,二元運算子的運算方向均是從左至右。下表列出了所有運算子以及它們的優先順序,由上至下代表優先順序由高到低:

優先順序運算子

7^ !

6* / % << >> & &^

5+ - | ^

4== != < <= >= >

3<-2&&

1||建議通過使用括號來明確某個表示式的整體運算優先順序。

go 語言入門

參見文章1,文章2 1.編譯 go build test.go 2.執行 go run test.go 3.看幫助 go doc builtin go doc fmt fnv4.執行測試 編寫源 even.go this package is test for write package packa...

go語言入門

目錄go命令 apt install golang yum install golang y 新增環境變數,使用一下命令測試安裝是否成功 go versiongo help就像其他靜態型別語言一樣,要執行 go 程式,需要先編譯,然後在執行產生的可執行檔案。go build命令就是用來編譯 go程式...

Go 語言入門一 Go 安裝

本文介紹 go 語言編譯工具的安裝和解除安裝。如果是公升級go工具,則先解除安裝舊版本,在安裝新版本。tar c usr local xzf go version.os arch.tar.gz 將 usr local go bin目錄新增至環境變數 編譯 etc profile或者 home pro...