🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 标识符和关键字 ### :-: 标识符 >在编程语言中标识符就是定义的具有特殊意义的词,变量名,常量,函数名,等等。GO的标识符是数,_,字母组成。 ### :-: 关键字 >关键字是编程语言预先定义灏的有特殊含义的标识符,关键字和保留字不用为变量名。 Go有25个关键字 ~~~go 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 ~~~ Go语言有37个保留字 ~~~go Constants: true false iota nil Types: int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune string error Functions: make len cap new append copy close delete complex real imag panic recover ~~~ ***** ## 变量 #### :-: **变量的来历** 程序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存中找到这个变量,但是如果我们直接在代码中通过 内存地址去操作变量的话,代码的可读性就会非常差,而且容易出错,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通过这个变量就找到内存中的对应数据了。 #### :-: **变量类型** 变量(Variable)的功能时存储数据,不同的变量保存的数据类型可能不一样,常见 的变量数据类型:整型,浮点型,布尔型 GO语言中的每一个变量都是有自己的类型。并且变量必须声明过才能使用。 #### :-: **变量声明** Go语言的每一个变量都是有自己的类型,并且变量必须经过申明才能使用 >**标准声明** Go语言的变量声明格式: ~~~go var 变量名 变量类型 ~~~ 变量 声明以关键字var开头,变量类型放在变量的后面,行尾无需分号,举例: ~~~go var name string var age int var isok bool ~~~ >**批量申明** 每申明一个变量就需要写一个var,比较繁琐,go还支持批量变量申明 ~~~go var ( a string b int c bool d float32 ) ~~~ >变量的初始化 Go语言在申明变量的时候,会自动对变量对应的内存区域进行初始化操作,每个变量会被初始化成其类型的默认值,例如:整型和浮点型变量的默认值是0,字符串变量的默认值为空字符串。布尔默认是false,切片,函数,指针变量的默认是nil 当然我们也可以在申明变量的收指定初始值,变量初始化的标准: ~~~go var 变量名 类型=表达式 ~~~ 举例: ~~~go var name string="QIMI" var age int =17 ~~~ 或者一次初始化多个变量 ~~~go var name,age ="qimi",20 ~~~ #### 类型推导 有时候我们将变量的类型忽略,这个时候编译器会更具右边的值来推导变量的类型完成初始化 ~~~go var name="qqqq" var age=17 ~~~ #### 短变量申明 在函数的内部,可以使用更简略的 `:=` 声明变量 ~~~go package main import ("fmt") var m=100 func main(){ n:=20 m:=200 fmt.Println(m,n) } ~~~ #### 匿名变量 在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量。匿名变量用一个下划线`_`表示,例如: ~~~go func foo()(int,string){ return 10,"qqqq" } func main(){ x,_:=foo() _,y:=foo() fmt.Println("x=",x) fmt.Println("y=",y) } ~~~ 匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明,在`Lua`编程语言中,匿名变量也交哑元变量 注意事项: 1. 函数外的每个语句都是必须以关键字开始(var const,func)等 2. :=不能使用在函数外 3. _多用于占位,表示忽略值 # 变量 相对于变量,常量是恒定不变的,多用于定义程序运行期间不会改变的那些值,常量的申明非常类似,只是把var换成了const,常量在定义的时候必须赋值。 ~~~go const pi=3.22 const e=333 ~~~ 声明pi和e这两个常量之后,在整个程序运行期间,他们的值都不能再发生变化 多喝常量也可以一起声明: ~~~go const( pi =22 e=222 ) ~~~ const同时声明多个常量时,如果省略了值则表示和上面一行的值相同。 ~~~go const ( n1=100 n2 n3 ) ~~~ ## :-: **iota** `iota`是go语言的常量计数器,只能在常量的表达式中使用 `iota`在const关键字出现时将被重置为0,const中每新增一行常量声明将使`iota`计数一次 使用iota在定义枚举时很有用 ~~~go const ( n1=iota //0 n2 //1 n3 //2 n4 //3 ) ~~~ 几个常见iota 使用`_`跳过某些值 ~~~go const( n1=iota //0 n2 //1 _ n4 //3 ) ~~~ `iota`声明中间插队 const( n1=iota //0 n2=100 //100 n3=iota //2 n4 //3 ) const n5=iota //0