Golang 学习笔记

Golang:变量

2017-11-27  本文已影响51人  与蟒唯舞
声明一个变量

语法:
var name type

package main

import "fmt"

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

语句 var age int 声明了一个名为 age 类型为 int 的变量。我们还没有为变量分配任何值。如果一个变量没有被赋值,golang 会自动用变量类型的零值初始化它。在这种情况下,age 被赋值为 0。

声明一个变量并初始化

语法:
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)
}
类型推导

语法:
var name = initialvalue

如果一个变量有初始值,golang 将自动使用该初始值来推断该变量的类型。因此,如果一个变量有初始值,变量声明中的类型可以省略。

package main

import "fmt"

func main() {  
    var age = 29 // type will be inferred
    fmt.Println("my age is", age)
}

可以看到声明变量 age 时并没有指定其类型。因为 age 的初始值为 29,golang 自动推断其类型为 int

多变量声明

语法:
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)
}

如果变量具有初始值,则类型可以省略。

package main

import "fmt"

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

可能有些情况下,我们想在一个语句中声明不同类型的变量。
语法:

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,以及两个整型的变量 ageheight

简短声明

golang 提供了一种简洁的方式,使用 := 操作符来声明变量。这种方式称为简短声明。注意:这种声明语法只能在函数内部使用。

语法:
name := initialvalue

package main

import "fmt"

func main() {  
    name, age := "naveen", 29 //short hand declaration
    fmt.Println("my name is", name, "age is", age)
}

简短声明要求必须给声明的每一个变量都提供初始值。下面的程序将会报错:cannot assign 1 values to 2 variables。这是因为没有给 age 提供初始值。

package main

import "fmt"

func main() {  
    name, age := "naveen" //error
    fmt.Println("my name is", name, "age is", age)
}

简短声明要求在 := 的左边必须至少有一个变量是新声明的。

package main

import "fmt"

func main() {  
    a, b := 20, 30 // declare variables a and b
    fmt.Println("a is", a, "b is", b)
    b, c := 40, 50 // b is already declared but c is new
    fmt.Println("b is", b, "c is", c)
    b, c = 80, 90 // assign new values to already declared variables b and c
    fmt.Println("changed b is", b, "c is", c)
}

上面的程序中,在 b, c := 40, 50 这一行,虽然变量 b 在之前已经被声明了,但是 c 却是新声明的变量,因此这是合法的。

变量可以被赋予运行时产生的值。

package main

import (  
    "fmt"
    "math"
)

func main() {  
    a, b := 145.8, 543.8
    c := math.Min(a, b)
    fmt.Println("minimum value is ", c)
}
上一篇 下一篇

猜你喜欢

热点阅读