Golang教程:(三)变量
原文:https://golangbot.com/variables/ 这是本Golang系列教程的第三篇。本篇介绍Golang中的变量。 你可以阅读 Golang教程:(二)Hello World 来学习如何建立 Go 工作空间以及编写和运行 hello world 程序。 什么是变量变量(Variable)是给某个内存地址起的一个名字。我们用变量来存储某个特定类型的值。在 Go 中有多种声明变量的语法。 声明单一变量声明一个变量的语法为: package main
import "fmt"
func main() {
var age int // variable declaration
fmt.Println("my age is",age)
}
语句 my age is 0
一个变量可以被赋予其类型的任何值。例如,在上例中, 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
声明一个带初值的变量在声明变量时可以指定其初始值。 声明一个带初值的变量的语法为: package main
import "fmt"
func main() {
var age int = 29 // variable declaration with initial value
fmt.Println("my age is",age)
}
在上面的程序中, my age is 29
类型推导如果声明一个变量时提供了初始值,Go可以根据该初始值来自动推导变量的类型。因此如果声明变量时提供了初始值,就可以不必指定其类型。 也就是说,如果声明变量的形式为: 在下面的例子中,你可以看到声明变量 package main
import "fmt"
func main() {
var age = 29 // type will be inferred
fmt.Println("my age is",age)
}
多变量声明多个变量可以在一条语句中声明。 多变量声明的语法为: 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",height)
}
运行上面的程序,可以看到输出结果为: width is 100 height is 50
正如你猜想的那样,如果不指定 package main
import "fmt"
func main() {
var width,height int
fmt.Println("width is",height)
width = 100
height = 50
fmt.Println("new width is","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)
}
这里我们声明了一个字符串类型的变量 my name is naveen,age is 29 and height is 0
速记声明Go 提供了另一种简洁的声明变量的方式。这种方式称为速记声明(shorthand declaratiion)。速记声明使用 := 操作符来声明变量。 速记声明的语法为: package main
import "fmt"
func main() {
name,age := "naveen", 29 //short hand declaration
fmt.Println("my name is","age is",age)
}
运行上面的程序,输出如下: my name is naveen age is 29
速记声明要求必须给声明的每一个变量都提供初始值。下面的 程序 将会报错: package main
import "fmt"
func main() {
name,age := "naveen" //error
fmt.Println("my name 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",c)
}
上面的程序中,在 a is 20 b is 30
b is 40 c is 50
changed b is 80 c is 90
但是当我们运行下面的程序: package main
import "fmt"
func main() {
a, 30 //a and b declared
fmt.Println("a is",b)
a,b := 40, 50 //error,no new variables
}
将会报错: (译者注:速记声明只能用在函数中。) 变量可以被赋予运行时产生的值。考虑下面的程序: package main
import (
"fmt"
"math"
)
func main() {
a,b := 145.8, 543.8
c := math.Min(a,b)
fmt.Println("minimum value is ",c)
}
在上面的程序中, 一个变量不能被赋予与其类型不同的值。下面的程序将报错: 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
}
感谢阅读。下一篇教程 Golang教程:(四)类型 将介绍 Golang 中的类型。 目录 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |