Go語言變數 常量 運算子(4)

2021-09-24 20:49:25 字數 3388 閱讀 1060

變數**於數學,是計算機語言中能儲存計算結果或能表示值抽象概念。變數可以通過變數名訪問。go 語言變數名由字母、數字、下劃線組成,其中首個字元不能為數字。

go語言中宣告變數的方式有很多種:(go對於已宣告但未使用的變數會在編譯階段報錯)

go語言中最基本的定義變數的方式是使用 var 關鍵字,與c語言不同的是go把變數型別放在變數名後面:

// 定義乙個名稱為 「variablename」 ,型別為 "type" 的變數 

var variablename type

可以同時定義多個變數:

// 定義三個型別都是 「type」 的三個變數 

var vname1, vname2, vname3 type

定義變數並初始化值:

// 初始化 「variablename」 的變數為 「value」 值,型別是 「type」

var variablename type = value

同時初始化多個變數:

定義三個型別都是 "type" 的三個變數 , 並且它們分別初始化相應的值

vname1 為 v1 , vname2 為 v2 , vname3 為 v3

var vname1, vname2, vname3 type= v1, v2, v3

簡單的寫法:

/*

定義三個變數,它們分別初始化相應的值

vname1 為 v1 , vname2 為 v2 , vname3 為 v3

然後 go 會根據其相應值的型別來幫你初始化它們

*/var vname1, vname2, vname3 = v1, v2, v3

更簡單的寫法:(不過它有乙個限制,那就是它只能用在函式內部;在函式外部使用則會無法編譯通過,所以一般用 var 方式來定義全域性變數。)

/*

定義三個變數,它們分別初始化相應的值

vname1 為 v1 , vname2 為 v2 , vname3 為 v3

編譯器會根據初始化的值自動推導出相應的型別

*/vname1, vname2, vname3 := v1, v2, v3

_ (下劃線)是個特殊的變數名,任何賦予它的值都會被丟棄。

//我們將值 35 賦予 b ,並同時丟棄 34 :

_, b := 34, 35

對於在包一級宣告的變數來說,它們的生命週期和整個程式的執行週期是一致的。而相比之下,區域性變數的宣告週期則是動態的:每次從建立乙個新變數的宣告語句開始,直到該變數不再被引用為止,然後變數的儲存空間可能被**。函式的引數變數和返回值變數都是區域性變數。它們在函式每次被呼叫的時候建立。

如果是批量宣告的常量,除了第乙個外其它的常量右邊的初始化表示式都可以省略,如果省略初始化表示式則表示使用前面常量的初始化表示式寫法,對應的常量型別也一樣的。

const (

a = 1

bc = 2

d)fmt.println(a, b, c, d) // "1 1 2 2"

iota常量生成規則也有其侷限性。例如,它並不能用於產生1000的冪(kb、mb等),因為go語言並沒有計算冪的運算子。

package main

import "fmt"

func main()

package main

import "fmt"

const (

i=1< b else

a = 5

b = 20

if a <= b

if b >= a

//邏輯運算子

var ba bool = true

var bb bool = false

if ba && bb

if ba || bb

/*修改 a 和 b 的值*/

ba = false

bb = true

if ba && bb else

if !(ba && bb)

//賦值運算

var ua uint = 60 /*60 = 0011 1100*/

var ub uint = 13 /*13 = 0000 1101*/

var uc uint = 0

uc = ua & ub /*12 = 0000 1100*/

fmt.printf("%d\n", uc)

uc = ua | ub /*61 = 0011 1101*/

fmt.printf("%d\n", uc)

uc = ua ^ ub /*49 = 0011 0001*/

fmt.printf("%d\n", uc)

uc = ua << 2 /*240 = 1111 0000*/

fmt.printf("%d\n", uc)

uc = ua >> 2 /*15 = 0000 1111*/

fmt.printf("%d\n", uc)

c = a

fmt.printf("c 值為 = %d\n", c)

c += a

fmt.printf("c 值為 = %d\n", c)

c -= a

fmt.printf("c 值為 = %d\n", c)

c *= a

fmt.printf("c 值為 = %d\n", c)

c /= a

fmt.printf("c 值為 = %d\n", c)

c = 200

c <<= 2

fmt.printf("c 值為 = %d\n", c)

c >>= 2

fmt.printf("c 值為 = %d\n", c)

c &= 2

fmt.printf("c 值為 = %d\n", c)

c ^= 2

fmt.printf("c 值為 = %d\n", c)

c |= 2

fmt.printf("c 值為 = %d\n", c)

//逗號運算子

a1, b1, c1 := 1, 2, 3

/* c語言

int x=(1,2,3)//從左往右計算,取最右值

go:x :=(1,2,3)//不合法

*/ fmt.println(a1, b1, c1)

//指標運算子

var p *int = &a

fmt.printf("%p,%d,%d,%d\n", p, *p, a, unsafe.sizeof(a))

}

Go 常量與運算子

1.常量的值在編譯的時候就已經確定。所以,在定義的時候就必須賦值 2.使用 const 關鍵字來宣告常量。賦值形式與變數類似 標準定義 const pi int 3.14 省略型別 const str a 將常量放在一組定義 const e 1 f e 1 定義一組常量 const a,b,c 1,...

Go語言運算子

go語言學習教程 www.lsdcloud.com 運算子用於在程式執行時執行數學或邏輯運算。go 語言內建的運算子有 求餘 下表列出了所有go語言的算術運算子。假定 a 值為 10,b 值為 20。運算子描述例項 相加a b 輸出結果 30 相減 a b 輸出結果 10 相乘 a b 輸出結果 2...

Go語言 運算子

go 語言內建的運算子有 算術運算子 關係運算子 邏輯運算子 位運算子 賦值運算子 運算子描述 相加 相減 相乘 相除 求餘 注意 自增 和 自減 在go語言中是單獨的語句,並不是運算子。運算子描述 檢查兩個值是否相等,如果相等返回 true 否則返回 false。檢查兩個值是否不相等,如果不相等返...