变量
声明变量:
标准格式 var 变量名 变量类型
批量格式(带括号)
var (
a int
b string
c bool
)
初始化变量:
标准格式: var age int = 20
编译器推导类型格式(省去变量类型,由编译器推导): var age = 20
短变量声明并初始化 : age := 20
常见,注意变量不可重复声明
但是在多个短变量声明并初始化中只要由一个新声明的变量出现在左值,即使存在重复声明的情况,编译器也不会报错。
var name string
name,age := "TOM",18 //name 重复声明不会报错
默认值
Go语言在声明变量时会自动对每个变量对应的内存区域进行初始化,即每个变量有默认值。
整型和浮点型:0
字符串:空字符串
布尔型:false
切片,函数,映射,和指针变量:nil(相当于null,None,NULL)
变量值交换:初始化 => a,b = b,a
匿名变量:_ ,可代替不需要接受值的变量,不占用命名空间,也不会分配内存。
数据类型:
判断类型:reflect.TypeOf()函数判断,搭配fmt.Println函数打印到控制台
整型:
有符号整型:int8,int16,int32,int64
无符号整型:unit8,unit16,unit32,unit64
区别:无符号整型正数范围比有符号整型整数范围大一倍
整型相除,小数部分直接截取,只取整数部分。
浮点型:
float32,float64(默认由计算机系统决定)
字符串:
多行字符串用` `(反引号)实现
例如:
str := `第一行字符串
第二行字符串
第三行字符串`
字符和转义字符:
字符串中每个元素就是字符,字符的值为单引号中的内容。
一种为unit8类型,代表ASCII码的一个字符
一种是rune类型,代表UTF格式(中文,日文…)的一个字符,本质是int32类型。
func main(){
english := 'a'
chinese := '我'
fmt.Println(english)
fmt.Println(chinese)
}
//结果为
97
25105
转义字符:
\n | 换行符 |
---|---|
\r | 回车符 |
\t | 制表符 |
\’ | 单引号 |
\" | 双引号 |
\\ | 反斜杠 |
指针:指针是一种地址值,这个地址值代表着计算机内存空间中的某个位置。
指针变量就是存放地址值的变量,声明格式如下:
var p *int
fmt.Println(p)
//结果为:
<nil> //因为未指向任何地址
取变量指针: p = &a,
p保存的是变量a的地址
*p是获取指针所指向的内容
&p代表指针变量p的地址,
由于指针变量也是变量,在内存中也有自己的地址,每次运行程序得到的实际结果可能不相同是因为变量在内存中的位置都是随机的。
使用指针修改值:
func main() {
num := 1
p = &num
fmt.Println(*p)
*p = 10
fmt.Println(*p)
}
//结果为:
1
10
也可使用new()函数给指针分配地址并初始化地址对应的值
p := new(int)
字符串应用:
字符串拼接:
+(适用于拼接字符串不是很长时)
字节缓冲(推荐),IDE上看-----bytes包中的Buffer结构本质是字节数组,字符串本质上也是一种字节数组,可通过WriteString()方法写入。
func main() {
a := "0123456"
b := "789"
var c bytes.Buffer
c.WriteString(a)
c.WriteString(b)
fmt.Println(c.String(c))
}
//结果为:
0123456789
字符串截取:
strings.Index()从头对字符串进行搜索,获取搜索内容所属下标,完成对字符串的截取;
strings.LastIndex()从尾截取。
func main() {
str := "Go语言,Pyhton语言"
index := strings.Index(str,"语")
lastIndex := strings.LastIndex(str,"语")
fmt.Println(index)
fmt.Println(lastIndex)
}
//结果为:
2
17
字符串修改:
无法直接修改,转换为字节数组后进行操作。
func main() {
str := "Go语言"
bytes := []byte(str)
for i := 0; i < 2; i++ {
bytes[i] = ' '
}
fmt.Println(string(bytes))
}
//结果为:
语言
字符串格式化输出:
fmt.Springf()方法
第一个参数为需要格式化的字符串,包含格式化动词
格式化动词 | 动词功能 |
---|---|
%v | 按值的本来值输出 |
%+v(推荐) | 在%v的基础上,对结构体字段名和值进行展开 |
%#v | 输出Go语言语法格式的值 |
%d | 整数以十进制方式展示 |
%b | 整数以二进制方式展示 |
%o | 整数以八进制方式展示 |
%x | 整数以十六进制方式展示 |
%s | 字符串 |
%f | 浮点数 |
输出结果为: