go定义变量的方式和c,c++,java语法不一样,如下
var 变量名 类型, 比如 : var a int
var在前,变量名在中间,类型在后面 我们以代码举例,如下
package main
import "fmt"
func main() {
var n1 int //定义一个int变量,初始值为0
var n2 int = 10 //定义一个int变量,并赋值10
var n3 = 10 //定义一个int变量,后面可省略int关键字,编译器自动推断为int类型
n4 := 10 //定义一个int变量,可省略var和int关键字,编译器自动推断为int类型
a, b , c := 1,2,3 //连续定义3个变量,并依次赋值为1,2,3
//也可以 var a,b,c = 1,2,3
fmt.Println(n1,n2,n3,n4)
fmt.Println(a,b,c)
}
输出
0 10 10 10
1 2 3
这5种定义变量的方式,选择你喜欢用的就行
本人主要使用 :=
注1
使用 := 定义变量时,变量必须是未定义的或者至少有一个是未定义的 比如在定义单个变量时
a := 10 // 正确,定义一个变量a
a := 20 // 错误,a已经存在了,不能再使用 := 了, 如果赋值,可以 a=20
如果定义多个变量,必须至少有一个是未定义的,如下
a := 10
b := 20
//a,b虽然是已经定义了,但是c是未定义的,所以这种写法是正确的
a , b , c := 100,100,100
fmt.Println(a,b,c) //打印 100,100,100
注2
变量定义完之后,后面必须有使用到的地方,否则会报错
如下面的 main
函数
package main
import "fmt"
func main() {
a := 10
fmt.Println("hello,world")
}
编译报如下的错,count定义了但是没有使用
# command-line-arguments
src/main.go:6:2: count declared and not used
go语言认为,定义了变量,就必须使用,要不你定义它干嘛,这也好理解,就是减少代码中可能出现的无用的变量 所以,这种情况下,如果不使用的变量我们不定义就是了,很好解决
但是我们就是要定义,但就是不想用或者暂时用不到,怎么办呢? 答案:使用下划线 _ go的函数是可以返回多个值的,如果我们调用了一个函数,返回了2个以上的值,我们只用其中一个,怎么办呢?用下划线,代码如下
package main
import "fmt"
func main() {
//只用到第一个返回值
a , _ := info()
fmt.Println("a=",a)
}
//go语言的函数定义 ,返回2个int类型的值
func info() (int,int) {
return 10,20
}
打印如下:
a= 10
3 变量的作用域
如果你有c,c++,java的经验,那么go语言的变量使用域名和这几门语言是一样的
一句话: 就近原则,定义在作用域用的变量只能在函数中使用 如果外面有定义的同名变量,则就近原则