變數**於數學,是計算機語言中能儲存計算結果或能表示值抽象概念。變數可以通過變數名訪問。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。檢查兩個值是否不相等,如果不相等返...