Golang教程:變量


聲明單一變量

聲明一個變量的語法為:var name type,例如

package main

import "fmt"

func main() {  
    var age int // variable declaration
    fmt.Println("my age is", age)
}

語句 var age int 聲明了一個類型為 int,名稱為 age 的變量。在這里我們沒有給它賦任何值。如果一個變量沒有被賦予任何值,Go 會自動將這個變量初始化為其類型的 0值,比如這里的 age 將被賦值為 0。運行這個程序,將得到如下輸出:

my age is 0

一個變量可以被賦予其類型的任何值。例如,在上例中,age 可以被賦予任何整型值:

package main

import "fmt"

func main() {  
    var age int // variable declaration
    fmt.Println("my age is ", age)
    age = 29 //assignment
    fmt.Println("my age is", age)
    age = 54 //assignment
    fmt.Println("my new age is", age)
}

輸出如下:

my age is  0  
my age is 29  
my new age is 54  

聲明一個帶初值的變量

在聲明變量時可以指定其初始值。

聲明一個帶初值的變量的語法為:var name type = initialvalue,例如:

package main

import "fmt"

func main() {  
    var age int = 29 // variable declaration with initial value

    fmt.Println("my age is", age)
}

在上面的程序中, age 是一個 int 型的變量,初始值為 29運行上面的程序,輸出如下。可以看到 age 的初始值確實為29

my age is 29

類型推導

如果聲明一個變量時提供了初始值,Go可以根據該初始值來自動推導變量的類型。因此如果聲明變量時提供了初始值,就可以不必指定其類型。

也就是說,如果聲明變量的形式為:var name = initialvalue,Go將根據 initialvalue 自動推導變量 name 的類型。

在下面的例子中,你可以看到聲明變量 age 時並沒有指定其類型。因為 age 的初值為 29,Go 自動推斷其類型為 int

package main

import "fmt"

func main() {  
    var age = 29 // type will be inferred

    fmt.Println("my age is", age)
}

多變量聲明

多個變量可以在一條語句中聲明。

多變量聲明的語法為:var name1, name2 type = initialvalue1, initialvalue2,例如:

package main

import "fmt"

func main() {  
    var width, height int = 100, 50 //declaring multiple variables

    fmt.Println("width is", width, "height is", height)
}

如果指定了初始值,則 type 可以省略。下面的程序利用類型推導聲明了多個變量:

package main

import "fmt"

func main() {  
    var width, height = 100, 50 //"int" is dropped

    fmt.Println("width is", width, "height is", height)
}

可以看到輸出結果為:

width is 100 height is 50

正如你猜想的那樣,如果不指定 width 和 height 的初值,它們將自動被賦值為 0,也就是說它們將以 0 作為初值:

package main

import "fmt"

func main() {  
    var width, height int
    fmt.Println("width is", width, "height is", height)
    width = 100
    height = 50
    fmt.Println("new width is", width, "new height is ", height)
}

將會輸出:

width is 0 height is 0  
new width is 100 new height is  50 

有些時候我們需要在一條語句中聲明多個不同類型的變量。我們可以使用下面的語法達到此目的:

var (  
      name1 = initialvalue1,
      name2 = initialvalue2
)

下面的程序就用上面的語法聲明了多個不同類型的變量:

package main

import "fmt"

func main() {  
    var (
        name   = "naveen"
        age    = 29
        height int
    )
    fmt.Println("my name is", name, ", age is", age, "and height is", height)
}

這里我們聲明了一個字符串類型的變量 name,以及兩個整型的變量 age 和 height。(我們將在下一篇教程中討論 Golang 中可用的類型)。上面的程序將會產生如下輸出:

my name is naveen , age is 29 and height is 0

速記聲明

Go 提供了另一種簡潔的聲明變量的方式。這種方式稱為速記聲明(shorthand declaratiion)。速記聲明使用 := 操作符來聲明變量。

速記聲明的語法為:name := initialvalue,例如:

package main

import "fmt"

func main() {  
    name, age := "naveen", 29 //short hand declaration

    fmt.Println("my name is", name, "age is", age)
}

上面的程序,輸出如下:

my name is naveen age is 29

記聲明要求必須給聲明的每一個變量都提供初始值。下面的 程序將會報錯:assignment count mismatch: 2 = 1。這是因為 沒有給 age 提供初始值。

package main

import "fmt"

func main() {  
    name, age := "naveen" //error

    fmt.Println("my name is", name, "age is", age)
}

速記聲明要求在 := 的左邊必須至少有一個變量是新聲明的。

一個變量不能被賦予與其類型不同的值。下面的程序將報錯:cannot use "naveen" (type string) as type int in assignment。這是因為 age 被聲明為 int 類型,但是我們試圖將 string 類型的值賦給它。

package main

func main() {  
    age := 29      // age is int
    age = "naveen" // error since we are trying to assign a string to a variable of type int
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM