一、转义符是什么?
转义字符 | 意义 |
\n | 换行,将当前位置移动到下一行开头 |
\r | 回车,将当前位置移到本行开头 |
\t | 相当于一个Tab键 |
\\ | 代表一个反斜线“\” |
\" | 代表一个双引号字符 |
代码实战
package main
import "fmt"
/*
*
字符串基本用法
*/
func main() {
//转义符
// 我在学习"go"语言的字符串基本用法\,字符串的'基本用法'
// 假如现在在程序里输出这么一段话 我们需要对 引号来进行转义 因为他和我们定义字符串冲突了
// 转义可以使用 \ 或者使用 ``
var learn string
learn = "我在学习\"go\"语言的字符串基本用法\\,字符串的'基本用法'"
learn1 := `我在学习"go"语言的字符串基本用法`
fmt.Println(learn)
fmt.Println(learn1)
// 1.\n:换行,将当前位置移到下一行开头
var string1 string
string1 = "我在学习go语言,\n学习到换行符了"
fmt.Println(string1)
// 2.\r:回车,将当前位置移到本行开头
var string2 string
string2 = "我在学习go语言,\r学习到回车符了"
fmt.Println(string2)
// 3.\t:相当于一个 Tab键
var string3 string
string3 = "\t我在学习go语言,到tab键了"
fmt.Println(string3)
//计算字符串的长度
var desc string
desc = "我在学习字符串的基本用法"
descs := []rune(desc)
fmt.Println(len(descs))
}
二、字符串格式化输出
2.1 缺省格式和类型
格式化后的效果 | 动词 | 描述 |
[0 1] |
| 缺省格式 |
[]int64(0,1) |
| go语法打印 |
[]int64 |
| 类型打印 |
2.2 整型(缩进,进制类型,正负符号)
格式化后的效果 | 动词 | 描述 |
15 |
| 十进制 |
+15 |
| 必须显示正负符号 |
_15 |
| Pad空格(宽度为4,右对齐) |
15_ |
| Pad空格(宽度为4,左对齐) |
1111 |
| 二进制 |
17 |
| 八进制 |
f |
| 16进制,小写 |
2.3 字符(有引号,Unicode)
value:65 (Unicode 是 A )
格式化后的效果 | 动词 | 描述 |
A |
| 字符 |
‘A’ |
| 有引号的字符 |
U+0041 |
| Unicode |
U+0041 ‘A’ |
| Unicode有引号 |
2.4 浮点(缩进、精度、科学计数)
value:123.456
格式化后的效果 | 动词 | 描述 |
1.234560e+02 |
| 科学计数 |
123.456000 |
| 十进制小数 |
2.5 字符串
value:“cookie”
格式化后的效果 | 动词 | 描述 |
cookie |
| 字符串原样输出 |
_cookie |
| 宽度为6,邮对齐 |
部分演示代码:
package main
import "fmt"
func main() {
//=============================================== 二、格式化输出相关的参数===========================
username := "张三"
age := 20
address := "北京"
var ages []int = []int{1, 2, 3}
outContent := fmt.Sprintf("用户名%s,年龄:%d,地址:%s 数组的值:%v", username, age, address, ages)
fmt.Println(outContent)
}
三、字符串拼接
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
//字符串的拼接
name := "张三"
age := 18
sex := "男"
address := "北京市海淀区上地大厦"
//第一种拼接方式:字符串性能最差的
outContent := fmt.Sprintf("姓名是:%s,性别是:%s,年龄是:%d,工作地址在:%s", name, sex, age, address)
//第二种拼接方式:性能良好的
outContent1 := "姓名是:" + name + ",性别是:" + sex + ",年龄是:" + strconv.Itoa(age) + ",工作地址在:" + address
//第三种拼接方式:性能最好
var builder strings.Builder
builder.WriteString("姓名是:")
builder.WriteString(name)
builder.WriteString(",性别是:")
builder.WriteString(sex)
builder.WriteString(",年龄是:")
builder.WriteString(strconv.Itoa(age))
builder.WriteString(",工作地址是:")
builder.WriteString(address)
//生成字符串内容
outContent2 := builder.String()
//统计 builder的长度
fmt.Println("字符串的长度", builder.Len())
//重置 builder的内容?
builder.Reset()
outContent3 := builder.String()
//打印内容
fmt.Println(outContent)
fmt.Println(outContent1)
fmt.Println(outContent2)
fmt.Println("这是什么内容:" + outContent3)
}
四、字符串的比较
package main
import (
"fmt"
"strings"
)
func main() {
//=============================================== 二、字符串的比较===========================
a := "hello"
b := "hello"
c := "bello"
fmt.Println(a == b)
fmt.Println(a != b)
//大小比较 比较 ASCII码
fmt.Println(a > c)
}
五、字符串操作常用方法
字符串常用方法可以点进到源码进行查看
package main
import (
"fmt"
"strings"
)
func main() {
//=============================================== 三、字符串的常用方法===========================
content := "我在学习go语言,正在学习的是字符串的常用方法"
//查询字符串是否包含某个值
fmt.Println(strings.Contains(content, "go"))
//计算字符串的长度
var desc string
desc = "我在我"
descs := []rune(desc)
fmt.Println(len(descs))
//出现的次数
fmt.Println(strings.Count(content, "go"))
//分割字符串
var contents = strings.Split(content, ",")
fmt.Println(contents[0])
fmt.Println(contents[1])
}