linuxea:go变量语法声明(3)


I. 3.变量语法声明

声明语句用于定义程序的各种实体对象,如:

  • var 声明变量

  • sonst 声明常量

  • func 声明函数

  • typ 声明类型

变量

什么是变量?

变量是值对一块存储空间的定义名称 ,通过名称对存储空间的内容进行访问或者修改。变量声明的常见语法:

变量的声明必须满足标识语法:

1,定义一个me的变量,并指定变量类型

2,赋值me 值为linuxea.com

需要满足标识符的命名规则。

  • 必须由非空的unicode字符串组成,数字,_
  • 不能是数字开头
  • 不能为go的关键字
  • 避免和go预定义的(25个)标识符冲突,如:true,false等
  • 建议使用驼峰式
  • 标识符区分大小写
    var me string
    me = "linuxea.com"

如下:

[root@LinuxEA /opt/Golang]# cat 02.go
package main
import "fmt"
func main(){
    var me string
    me = "linuxea.com"
    fmt.Println(me)
}

!!! 警告

注意:函数体内的变量必须使用,否则会报错

运行

[root@LinuxEA /opt/Golang]# go run 02.go 
linuxea.com

函数外变量

现在我们在函数之外定义一个变量,使用等号=进行赋值

!!! note

如果定义的变量没有赋值,就会自动赋值一个零值
var version string = "www.linuxea.com"

如下:

package main
import "fmt"
var version string = "www.linuxea.com"
func main(){
    var me string
    me = "linuxea.com"
    fmt.Println(me)
}

函数外的变量没有使用是不会报错的。

[root@LinuxEA /opt/Golang]# go run 02.go 
linuxea.com

定义多个变量

通常在定义变量的时候,使用var,每次定义一个。

var name string
var age string

其实我们可以使用逗号将同一个类型的变量隔开进行定义

var name,age string

而对多个变量赋值的时候,也可以如此

name,age = "mark","18"

如下:

package main
import "fmt"
var version string = "www.linuxea.com"
func main(){
    var me string
    me = "linuxea.com"
    fmt.Println(me)

    var name,age string
    name,age = "mark","18"
    fmt.Println(name,age)
}

运行:

[root@LinuxEA /opt/Golang]# go run 02.go 
linuxea.com
mark 18

当然了,也可以把不同类型的变量在一起定义,使用括号即可

  • 不同类型的多个变量定义

我们可以使用var括号进行定义,比如定义一个tel是int类型的,和一个desc是string类型的,如下:

    var (
        tel int
        desc string
    )

赋值

    tel,desc = 10086,"联通"
    fmt.Println(tel,desc)

运行

[root@LinuxEA /opt/Golang]# go run 02.go 
linuxea.com
mark 18
10086 联通

当然了, 我们也可以在声明的时候进行赋值,如下:

    var (
        tel int = 10086
        desc string = "上海"
    )
    fmt.Println(tel,desc)

运行结果仍然不变

[root@LinuxEA /opt/Golang]# go run 02.go 
linuxea.com
mark 18
10086 上海

简短声明

然而,在定义变量的时候,可以不指定类型,go会根据赋值类型自动推导,但是必须赋值,如下:

!!! note

使用`:=`冒号等于做简短赋值,左边是变量名,右边是值
tel,desc := 10010,"上海市淞虹路"
fmt.Println(tel,desc)

运行

[root@LinuxEA /opt/Golang]# go run 02.go 
10010 上海市淞虹路

var与简短声明的区别

!!! note

> 注意:这里使用了简短声明,没有使用var声明 。在函数体内可以使用简短声明。而在函数体外必须使用var 定义,如下,go会根据值类型进行自动推导类型
package main
var tel,desc = 10010,"上海市淞虹路"
func main(){}  // 函数体

package main
var (
        tel int = 10086
        desc string = "上海"
    )
    func main(){}   // 函数体

重复赋值

!!! note

> !注意:变量只能声明一次,不能重复定义,但是可以重复赋值
    tel := 10086
    desc := "上海"

重复赋值,重复赋值只需要等号即可

    tel = 10010
    desc = "北京"

运行结果是最近的赋值结果

[root@LinuxEA /opt/Golang]# go run 03.go 
10010 北京

值交换

当一次定义了多个值的时候就可以进行交换,这个方式很简单,如下:

    tel,desc := "10010","上海"
    fmt.Println(tel,desc)
    tel,desc = desc,tel
    fmt.Println(tel,desc)
package main
import "fmt"
var version string = "www.linuxea.com"
func main(){
    tel,desc := "10010","上海"
    fmt.Println(tel,desc)
    tel,desc = desc,tel
    fmt.Println(tel,desc)
}

运行

[root@LinuxEA /opt/Golang]# go run 03.go 
10010 上海
上海 10010

!!! note

> 注意:这里交换的值必须是同类型。
0 分享

您可以选择一种方式赞助本站

支付宝扫码赞助

支付宝扫码赞助

日期: 2019-10-04分类: Golang

标签: Golang

发表评论