go 變數在其中一個函式中賦值 另一個函式_Go語言極簡教程 - 第二篇 變數與常量...
阿新 • • 發佈:2021-01-26
變數
“變數”一詞來源於數學。計算機程式語言中為了程式碼的可讀性,使用變數名來標識一塊記憶體地址,可以簡單地理解為變數是給某塊記憶體地址起一個有意義且容易記憶的名字。
變數宣告
Go語言變數宣告有兩種方式:
- 顯式宣告
var variableName { [dataType] | [=initValue] }
示例
// 定義一個string型別的變數,變數名為namevar name string// 定義一個int型別的變數,變數名為age並且初始化為23var age int = 23// 定義一個變數,變數名為isAdult並且初始化true。// 定義部分未指定資料型別, 但Go語言會根據初始值推斷出變數為bool型別var isAdult = true
- 短型別宣告
variableName := value
:=宣告只能出現在函式體內,且不需要指定資料型別,由編譯器自動推斷。
示例
func test(){ name := "roc" // 函式體內定義一個string型別變數,變數名為name, 初始值為roc _=name}
常量
與“變數”類似,常量也是用於標識或命名記憶體中某塊地址,使用程式碼更具可讀性。不同的是,常量一旦宣告和初始化後不允許重新賦值。另外,Go語言中並不是所有的資料型別都可以用於宣告常量,只有bool、int、string以及float32等基礎資料型別才可以用於宣告常量。
常量宣告
const ConstName [dataType] = value
常量可以宣告在包內全域性作用域範圍,也可以在函式體內宣告,在函式體內宣告的常量只有該函式體內可見。
示例
// 宣告一個int型別的常量,常量名為age, 初始值為23const age int=23 // 宣告一個string型別的常量,常量名為name,初始值為roc。// 資料型別可以省略,由編譯器自動推斷const name="roc"
變數與常量比較
- 變數宣告和初始化後仍可以重新賦值,但常量一旦宣告且初始化後不可以重新賦值。
var v int =123 v=111 // 變數聲明後仍然可以重新賦值 const c int =123 c=111 // 錯誤:常量聲明後不可以再重新賦值
- 變數宣告時可以不進行顯式地初始化,Go語言會預設初始化為該型別的零值。但常量宣告必須顯式地初始化,且其值必須是字面量或其它常量。
var v int // 初始化為int型別的零值,即0 v=111 const c int // 錯誤:宣告時必須初始化 const c1 =v // 錯誤:必須使用常量或字量初始化 const c2= c // 正確:可以使用常量作為值初始化 const c3="roc" //正確:可以使用字串的字面量初始化常量
- 所有型別都可以用於宣告變數,但只有string、int、bool以float32等基礎型別才可以用於宣告常量。
type Foo struct { } func test(){ const f Foo=Foo{} // 錯誤: struct型別不可以用於宣告常量 var f1 Foo=Foo{} _=f1 }
- 變數和常量都可以在函式體內宣告。