3 Go语言的变量定义
九路 527 13

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语言的变量使用域名和这几门语言是一样的

一句话: 就近原则,定义在作用域用的变量只能在函数中使用 如果外面有定义的同名变量,则就近原则

评论区

索引目录