go之变量
注释
单行注释
1 | // 单行注释 等同于python # |
多行注释
1 | /* */ 多行注释 等同于python 三引号 |
变量的定义和使用
先定义再使用
完整定义
1 2 3 4 5 6 7 8 9 | package main import "fmt" func main() { //var 变量名 变量类型 = 变量值 定义并赋初值 var name string = "zys" fmt.Println(name) } |
类型推导
虽然是类型推导,但是在定义阶段类型就固定了,后期不能改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | package main import "fmt" func main() { //var 变量名 = 变量值 // 自动推到出变量是string类型 //var name ="zys" //var age =19 ////var age int =99 // 一旦定义过,就不能再定义了 //fmt.Println(name) //fmt.Println(age) ////name="彭于晏" // 修改变量的值 ////name=19 // 修改变量的值,类型固定,不能改 //fmt.Println(name)) } |
简略声明
:= 表示定义并赋初值 用的多,但是不代表它没有类型
1 2 3 4 5 6 7 8 9 10 | package main import "fmt" func main() { name := "zys" fmt.Println(name) name = "pyy" // 重复定义 fmt.Println(name) } |
通过类型推导的方式同时定义多个变量
1 2 | //var name,age,hobby ="zys",19,"篮球" //fmt.Println(name,age,hobby) |
通过完整定义的方式同时定义多个变量
1 2 | //var name,age,hobby string = "zys","19","篮球" //fmt.Println(name,age,hobby) |
变量后面只能跟一种类型,不能多种。定义了string类型,age就不能是int类型
通过简略声明的方式同时定义多个变量
1 2 | //name,age,hobby:="zys",19,"篮球" //fmt.Println(name,age,hobby) |
混合使用(用的比较多)
1 2 3 4 5 6 7 8 | // 用括号括起来,第一种和第二种的混合,这种用的多,如果变量不赋初值,是没法类型推到 //var ( // name string = "zys" // age int // hobby = "篮球" // wife string // 定义没有赋初值,为0 //) //fmt.Println(name, age, hobby,wife) |
变量不能重复定义,但是可以使用 : 的形式,只要左侧有没定义过的,它算修改值
1 2 3 4 | var name = "zys" //name:="pyy" 重复定义报错 name,age:= "pyy" ,19 // 只要左侧有没定义过的变量,这个就不错 fmt.Println(name,age) |
python 中所有类型都可以是None---》python一切皆对象(引用)--》地址里没放东西就是None,对着go中是nil,java中null
注意点:
1.变量定义了必须使用,如果不用就报错,编译不通过
2.变量在定义阶段,类型就固定了,后期不能改
3.变量不能重复定义 无论用那种方式定义过,都不能再定义了,只能使用
变量命名规范
命名规范
Go语言中的函数名、变量名、常量名、类型名、语句标号和包名等所有的命名,都遵循一个简单的命名规则:
1.一个名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线
2.大写字母和小写字母是不同的:Name和name是两个不同的变量
3.关键字和保留字都不建议用作变量名 --->内置函数,包,关键字不能做变量名
25个关键字
1 2 3 4 5 | break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var |
内建常量
1 | true false iota nil |
内建类型
1 2 3 4 | int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune string error |
内建函数
1 2 3 | make len cap new append copy close delete complex real imag panic recover |
注意
go变量定义推荐用驼峰 AgeOfPerson java中也是
python中推荐下划线 age_of_person
go大小写有特殊含义
go的文件命名推荐用下划线
go变量定义推荐用驼峰,go的文件命名推荐用下划线
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构