2.變數 、常量、列舉
2.1 變數
變數,計算機語言能儲存計算結果或表示值的抽象概念。可以通過變數名訪問,變數名由字母、數字、下劃線組成,其中首個字元不能為數字。
宣告變數的一般形式是使用 var 關鍵字:
var identifier type
var identifier1, identifier2 type
變數宣告方式:
指定變數型別,若沒有初始化,數值型別(包括complex64/128)預設零值,bool預設false,字串預設「」,「var a *int、var a int、var a map[string] int、var a chan int、var a func(string) int、var a error // error 是介面」預設nil
可根據值自行判斷型別
「:=」宣告,省略 var, 注意 := 左側必須宣告新的變數,否則產生編譯錯誤,格式:v_name := value
多變數宣告:
//型別相同多個變數, 非全域性變數
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3
var vname1, vname2, vname3 = v1, v2, v3 // 和 python 很像,不需要顯示宣告型別,自動推斷
vname1, vname2, vname3 := v1, v2, v3 // 出現在 := 左側的變數不能是已經被宣告過的,否則會導致編譯錯誤
// 這種因式分解關鍵字的寫法一般用於宣告全域性變數
var (
vname1 v_type1
vname2 v_type2
)注意:
「:=」 賦值操作符,高效建立新變數,初始化宣告:a := 50 或 b := false,a 和 b 的型別(int 和 bool)將由編譯器自動推斷。
這是使用變數的首選形式,但是它只能被用在函式體內,而不可以用於全域性變數的宣告與賦值。
在相同的**塊中,我們不可以再次對於相同名稱的變數使用初始化宣告,但可以賦值;
宣告了乙個區域性變數卻沒有在相同的**塊中使用它,同樣會得到編譯錯誤
全域性變數可以宣告但不用。
_ 實際上是乙個只寫變數,你不能得到它的值。這樣做是因為 go 語言中必須使用所有被宣告的變數,但有時你並不需要使用從乙個函式得到的所有返回值。
2.2 常量
常量是乙個簡單值的識別符號,在程式執行時,不會被修改的量。資料型別只可以是布林型、數字型(整數型、浮點型和複數)和字串型。 常量的定義格式:(省略型別說明符 [type],因為編譯器可以根據變數的值來推斷其型別。)
const identifier [type] = value
const b = 「abc」
多個相同型別的宣告可以簡寫為:
const c_name1, c_name2 = value1, value2
常用於列舉:
const (
unknown = 0
female = 1
male = 2
)0,1,2 代表未知、女、男
常量可以用len(), cap(), unsafe.sizeof()函式計算表示式的值。常量表示式中,函式必須是內建函式,否則編譯不過。
iota,特殊常量,可認為是可以被編譯器修改的常量。在 const關鍵字出現時將被重置為 0(const 內部的第一行之前),const 中每新增一行常量宣告將使 iota 計數一次(iota 可理解為 const 語句塊中的行索引)。第乙個 iota 等於 0,每當 iota 在新的一行被使用時,它的值都會自動加 1;
package main
import 「fmt」
const (
i=1結果:i= 1
j= 6
k= 12
l= 24
iota 表示從 0 開始自動加 1,所以 i=1<<0, j=3<<1(<< 表示左移的意思),即:i=1, j=6,這沒問題,關鍵在 k 和 l,從輸出結果看 k=3<<2,l=3<<3。
簡單表述:
i=1:左移 0 位,不變仍為 1;
j=3:左移 1 位,變為二進位制 110, 即 6;
k=3:左移 2 位,變為二進位制 1100, 即 12;
l=3:左移 3 位,變為二進位制 11000,即 24。
注:<2.3列舉
列舉,將變數的值一一枚舉出來,變數只限於列舉出來的值的範圍內取值。go語言中沒有列舉這種資料型別的,但是可以使用const配合iota模式來實現
2.3.1 普通列舉
const (
a = 0
b = 1
c = 2
d = 3
)2.3.2 自增列舉
iota只能用於常量表示式
它預設開始值是0,const中每增加一行加1,同行值相同
const (
a = iota //0
c //1
d //2
)const (
e, f = iota, iota //e=0, f=0
g = iota //g=1
)若中間中斷iota,必須顯式恢復。
const (
a = iota //0
b //1
c = 100 //100
d //100
e = iota //4
)
2 全域性變數和列舉常量
首先我們要定義一些excel物件變數 如本文第一部分所示,用來繪製圖表的資料原來儲存在sql資料庫,後來以記錄集物件的形式傳遞。資料首先儲存到這裡的工作表,然後又被傳遞給oexcelchart物件。oexcelchart物件是ms excel的chart物件,幫助檔案說它 代表工作簿中的圖表。該圖表...
Task03 變數 常量 列舉
var 宣告變數 多變數宣告原則 型別相同多個變數,非全域性變數 var vname1,vname2,vname3 type vname1,vname2,vname3 v1,v2,v3 var vname1,vname2,vname3 v1,v2,v3 和 python 很像,不需要顯示宣告型別,自...
TASK03 變數 常量 列舉
計算機語言能儲存計算結果或表示值的抽象概念。可以通過變數名訪問,變數名由字母 數字 下劃線組成,其中首個字元不能為數字。用var關鍵字宣告 var identifier type宣告方式 制定變數型別 若沒有初始化,數值型別 包括complex64 128 預設零值,bool預設false,字串預設...