基本变量与类型
Go语言变量
声明变量
1.标准格式
var 变量名 变量类型
2.批量格式
var (
a int
b string
c bool
)
初始化变量
- 整型和浮点型变量的默认值为0。
- 字符串变量的默认值为空字符串。
- 布尔型变量的默认值为false。
- 切片、映射、函数和指针变量莫仁伟nil。
注意:nil相当于其他编程语言中的null、None和NULL等,指代零值,在Go语言中只能赋予给切片、映射、函数、接口、指针或通道类型。
1.标准格式
var 变量名 变量类型 = 表达式
2.编译器推导类型格式
var age = 20
3.短变量声明并初始化
age := 30
注意:在多个短变量声明并初始化的过程中,应至少有一个新声明的变量出现在左值中,这样即使其他变量名存在重复声明的情况下,编译器也不会报错。
变量值交换
在Go语言中,变量值交换可以通过多重赋值的特性来完成变量值的交换工作
package main
import "fmt"
func main() {
a := 1
b := 2
a ,b =b ,a
fmt.Println("a=",a)
fmt.Println("b=",b)
}
多重赋值的时候,变量的左值和右值按照从左到右的顺序依次赋值
Go语言的数据类型
整型
整形主要分为有符号整型和无符号整型两大类:
- 有符号整型:int8、int16、int32、int64
- 无符号整型:uint8 、uint16、uint32、uint64
有符号整型其二进制最高位储蓄符号,因此两者的区别就是无符号整型可以存放的正数范围比有符号整型中正数范围大一倍
浮点型
Go语言支持两种浮点数:float32和float64。float32浮点数的最大范围为3.4e38,float64浮点数最大范围为1.8e308。
字符串
Go语言中,字符串的值为双引号中的内容,而且可以直接输入中文。
实际编程中,我们遇到输入很多行字符创的情况,此时需要使用“`”字符,即反引号。
字符和转义字符
字符
字符串中的每个元素就是字符。
Go语言的字符有以下两种类型:
- uint8类型:代表ASCII码的一个字符
- rune类型:代表了UTF格式的一个字符(如中文、日文或其他复合字符),本质是int32类型。
转义字符
转义符 | 含义 |
---|---|
\n | 匹配换行符 |
\r | 匹配回车符 |
\t | 匹配制表符 |
\’ | 匹配单引号 |
\ " | 匹配双引号 |
\ \ | 匹配反斜杠 |
布尔型
只有两个值:true和false
数据类型判断
使用Go语言标准库中的reflect包,通过将变量传入此包的TypeOf()方法,得到变量的数据类型。
数据类型转换
Go语言常见的数据类型之间能够相互之间进行类型转换,通过使用类型前置加小括号的方式进行。
package main
import (
"fmt"
"reflect"
)
func main() {
var a int16 =97
fmt.Println("变量a值为:",a,"变量类型为:",reflect.TypeOf(a))
b := int32(a)
fmt.Println("变量b值为:",b,"变量类型为:",reflect.TypeOf(b))
fmt.Println("转换变量b类型为string:",string(b))
执行结果如下:
变量a值为: 97,变量类型为:int16
变量b值为: 97,变量类型为:int32
转换变量类型为string: a
指针
声明指针
var 变量名 *int
取变量地址
使用擦操作符&取变量地址,取得的地址值赋予指针变量。
由于指针变量本身也是变量,因此指针变量在计算机中也有自己的地址。
获取指针都指向的内容
指针变量存储的值为地址值,通过在指针变量前加上“*”符号可以获取指针所指向地址值的内容。
使用指针修改值
在指针变量有实际指向的地址值后,可以通过如下格式修改指针所指向的内存地址的内容:
*变量名 =修改值
其它数据类型
切片、通道、map、映射和函数类型。