Go 語(yǔ)言變量(一)

變量來(lái)源于數(shù)學(xué),是計(jì)算機(jī)語(yǔ)言中能儲(chǔ)存計(jì)算結(jié)果或能表示值抽象概念。
變量可以通過(guò)變量名訪問(wèn)。
Go 語(yǔ)言變量名由字母、數(shù)字、下劃線組成,其中首個(gè)字符不能為數(shù)字。
聲明變量的一般形式是使用 var 關(guān)鍵字:

var identifier type

可以一次聲明多個(gè)變量:

var identifier1, identifier2 type

以下是一個(gè)實(shí)例:

package main
import "fmt"
func main() {
    var a string = "Runoob"
    fmt.Println(a)

    var b, c int = 1, 2
    fmt.Println(b, c)
}

以上實(shí)例輸出結(jié)果為:

Runoob
1 2

變量聲明

第一種,指定變量類型,如果沒(méi)有初始化,則變量默認(rèn)為零值。

var v_name v_type
v_name = value

零值就是變量沒(méi)有做初始化時(shí)系統(tǒng)默認(rèn)設(shè)置的值。
實(shí)例:

package main
import "fmt"
func main() {

    // 聲明一個(gè)變量并初始化
    var a = "RUNOOB"
    fmt.Println(a)

    // 沒(méi)有初始化就為零值
    var b int
    fmt.Println(b)

    // bool 零值為 false
    var c bool
    fmt.Println(c)
}

以上實(shí)例執(zhí)行結(jié)果為:

RUNOOB
0
false

  • 數(shù)值類型(包括complex64/128)為 0
  • 布爾類型為 false
  • 字符串為 ""(空字符串)
  • 以下幾種類型為 nil:
var a *int
var a []int
var a map[string] int
var a chan int
var a func(string) int
var a error // error 是接口

例子:

package main

import "fmt"

func main() {
    var i int
    var f float64
    var b bool
    var s string
    fmt.Printf("%v %v %v %q\n", i, f, b, s)
}

輸出結(jié)果是:

0 0 false ""

第二種,根據(jù)值自行判定變量類型。

var v_name = value

我們看一個(gè)例子:

package main
import "fmt"
func main() {
    var d = true
    fmt.Println(d)
}

輸出結(jié)果是:

true

第三種,省略 var, 注意 := 左側(cè)如果沒(méi)有聲明新的變量,就產(chǎn)生編譯錯(cuò)誤,格式:

v_name := value

例如:

var intVal int 
intVal :=1 // 這時(shí)候會(huì)產(chǎn)生編譯錯(cuò)誤
intVal,intVal1 := 1,2 // 此時(shí)不會(huì)產(chǎn)生編譯錯(cuò)誤,因?yàn)橛新暶餍碌淖兞?,因?yàn)?:= 是一個(gè)聲明語(yǔ)句

可以將 var f string = "Runoob" 簡(jiǎn)寫為 f := "Runoob":
實(shí)例:

package main
import "fmt"
func main() {
    f := "Runoob" // var f string = "Runoob"

    fmt.Println(f)
}

輸出結(jié)果是:

Runoob

多變量聲明

//類型相同多個(gè)變量, 非全局變量

var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3
var vname1, vname2, vname3 = v1, v2, v3 // 和 python 很像,不需要顯示聲明類型,自動(dòng)推斷
vname1, vname2, vname3 := v1, v2, v3 // 出現(xiàn)在 := 左側(cè)的變量不應(yīng)該是已經(jīng)被聲明過(guò)的,否則會(huì)導(dǎo)致編譯錯(cuò)誤

// 這種因式分解關(guān)鍵字的寫法一般用于聲明全局變量
var (
    vname1 v_type1
    vname2 v_type2
)

實(shí)例

package main

var x, y int
var (  // 這種因式分解關(guān)鍵字的寫法一般用于聲明全局變量
    a int
    b bool
)

var c, d int = 1, 2
var e, f = 123, "hello"

//這種不帶聲明格式的只能在函數(shù)體中出現(xiàn)
//g, h := 123, "hello"

func main(){
    g, h := 123, "hello"
    println(x, y, a, b, c, d, e, f, g, h)
}

以上實(shí)例執(zhí)行結(jié)果為:

0 0 0 false 1 2 123 hello 123 hello

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容