5 Go 变量声明的几种方式

一 单次声明一个变量,三种方式:

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main(){
 6     // Go声明变量有三种方式
 7     fmt.Println("方式一:声明变量并指定变量类型,接着赋值")
 8     // 变量申明后会默认给定该类型的默认值,例如int类型的默认值为0
 9     // 如果只申明变量未指定类型且未赋值,就会报错:syntax error: unexpected newline, expecting type
10     var a1 int
11     var a2 string
12     var a3
13     a2 = "Jack"
14     fmt.Println("a1=", a1, " a2=", a2," a3=", a3)
15     fmt.Println("")
16 
17     fmt.Println("方式二:申明变量并直接赋值,类型推导方式")
18     var b1 = 10
19     var b2 = "Sam"
20     fmt.Println("b1=", b1, " b2=", b2)
21     fmt.Println("")
22 
23     fmt.Println("方式三:省略var关键字申明变量并直接赋值,类型自动推导")
24     // 等号左边的冒号不可省略
25     c1 := 30
26     c2 := "John"
27     fmt.Println("c1=", c1, " c2=", c2)
28 }

 

 

 

二 单次申明多个变量,三种方式:

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main() {
 6     // 单词申明多个变量的三种方式
 7     fmt.Println("方式一:单次申明多个变量并指定同一类型,不赋值")
 8     var a1, a2, a3 int
 9     fmt.Println("a1=",a1,"a2=",a2,"a3=",a3)
10     fmt.Println("")
11 
12     fmt.Println("方式二:var关键字单次申明多个变量并直接赋值,可以赋不同的值(类型推导)")
13     var b1, b2, b3 = 10, "Maik", 10.11
14     fmt.Println("b1=",b1,"b2=",b2,"b3=",b3)
15     fmt.Println("")
16 
17     fmt.Println("方式三::=方式单次申明多个变量并直接赋值,可以赋不同的值(类型推导)")
18     c1, c2, c3 := 30, "Lily", 33.33
19     fmt.Println("c1=",c1,"c2=",c2,"c3=",c3)
20     fmt.Println("")
21 }

 

 

三 申明全局变量

 1 package main
 2 
 3 import "fmt"
 4 
 5 // 单个全局变量申明
 6 var a int
 7 var b = 11.11
 8 
 9 // 多个全局变量申明
10 var (
11     c = 40.12
12     d = "Jon"
13 )
14 
15 func main() {
16     fmt.Println("a=",a,"b=",b,"c=",c,"d=",d)
17 }

 

四 变量使用注意事项

1 变量在同一个区块作用域内不用重复声明,但是在不同的作用域允许有重名的变量

2 变量在声明时确定类型之后,就不可再更赋其他类型的值

3 Go变量如果在声明时没有赋初试值,编译器会使用默认值,如:int默认值为0,string默认值为空串,小数默认值为0

举例如下:

1

 1 package main
 2 
 3 import "fmt"
 4 
 5 var g = 123
 6 
 7 func main() {
 8     // 变量在同一个区块作用域内不用重复声明
 9     // 但是在不同的作用域允许有重名的变量
10     fmt.Println("变量在同一个区块作用域内不用重复声明")
11     fmt.Println("但是在不同的作用域允许有重名的变量")
12     fmt.Println("全局变量g=",g) // 123
13     var g = 333
14     fmt.Println("main函数内变量g=",g) // 333
15 
16 }

 

 

2

 1 package main
 2 
 3 import "fmt"
 4 
 5 func main() {
 6 
 7     // 变量在声明时确定类型之后,就不可再更赋其他类型的值
 8     fmt.Println("变量在声明时确定类型之后,就不可再更赋其他类型的值")
 9     var a int = 10
10     a = 2.22
11     fmt.Println("a=",a)
12 
13     var b = 20
14     b = 2.22
15     fmt.Println("b=",b)
16 
17     c := 30
18     c = 2.22
19     fmt.Println("c=",c)
20 }

 

 

3

1 package main
2 
3 import "fmt"
4 
5 func main() {
6     var init int
7     fmt.Println("init=", init)
8 }

 

posted @ 2022-05-02 11:37  风铃如沧海  阅读(205)  评论(0编辑  收藏  举报