2 變數 常量 列舉

2021-10-12 07:08:27 字數 2685 閱讀 9185

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,字串預設...