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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具