### 字符串拼接
> **字符串拼接通过 "+" 完成**
```
package main
import "fmt"
func main() {
a := "你好!"
b := "word"
c := a + b
fmt.Println(c)
// 你好!word
}
```
> **当所需要拼接的字符串长度较长,需要使用下面 字节缓冲的方法。**
```
package main
import (
"bytes"
// 引入 bytes包中 WriteString()的方法来写入
"fmt"
"reflect"
)
func main() {
a := "你好!"
b := "word"
var c bytes.Buffer
// 声明变量 c ,类型为字节缓冲
c.WriteString(a)
// 写入字符串变量a的内容
c.WriteString(b)
// 写入字符串 变量b的内容
fmt.Println(c.String())
// 你好!word
fmt.Println(reflect.TypeOf(c))
// bytes.Buffer
}
```
### 字符串截取
> **使用 strings包的 Index() 方法对字符串搜索并截取,LastIndex()方法反向搜索字符串**
```
package main
import (
"fmt"
"strings"
)
func main() {
str := "holle,word!"
// 正向搜索Index()
index := strings.Index(str, "e")
// 反向搜索LastIndex()
lastindex := strings.LastIndex(str, "r")
fmt.Println(index)
// 4
fmt.Println(lastindex)
// 8
fmt.Println(str[lastindex:])
// rd!
fmt.Println(str[index:])
// e,word!
fmt.Println(str[index:5])
// e
}
```
### 修改字符串
> **将字符转换成字节数组才能修改**
```
package main
import "fmt"
func main() {
str := "Hello, world!"
bytes := []byte(str)
// 使用 for 循环 把前面两个[0][1] 替换成 ' ' 转换字节不能用 " "
for i := 0; i < 2; i++ {
bytes[i] = ' '
}
fmt.Println(string(bytes))
// llo, world!
}
```
### 字符串格式化输出
> **使用 fmt 包的 Sprintf()方法,调用格式:**
> **Sprintf(format,arg1,arg2,.......)**
> **需要配合格式化动词,使用 "%"开头**
```
package main
import "fmt"
func main() {
day := 1
hour := 24
// (格式化字符串,变量1,变量2)
str := fmt.Sprintf("%d天有%d小时", day, hour)
fmt.Println(str)
//1天有24小时
}
```
### GO语言中的字符串的常见操作(strings包)
* * *
**在Go语言的字符串中的常见操作**
* strings.HasPrefix(s string, prefix string) bool:判断字符串s是否以prefix开头
* strings.HasSuffix(s string, suffix string) bool:判断字符串s是否以suffix结尾。
* strings.Index(s string, str string) int:判断str在s中首次出现的位置,如果没有出现,则返回-1
* strings.LastIndex(s string, str string) int:判断str在s中最后出现的位置,如果没有出现,则返回-1
* strings.Replace(str string, old string, new string, n int):字符串替换
* strings.Count(str string, substr string)int:字符串计数
* strings.Repeat(str string, count int)string:重复count次str
* strings.ToLower(str string)string:转为小写
* strings.ToUpper(str string)string:转为大写
* strings.TrimSpace(str string):去掉字符串首尾空白字符
* strings.Trim(str string, cut string):去掉字符串首尾cut字符
* strings.TrimLeft(str string, cut string):去掉字符串首cut字符
* strings.TrimRight(str string, cut string):去掉字符串首cut字符
* strings.Field(str string):返回str空格分隔的所有子串的slice
* strings.Split(str string, split string) \[\]string:返回str split分隔的所有子串的slice
* strings.Join(s1 \[\]string, sep string):用sep把s1中的所有元素链接起来
* strings.Itoa(i int):把一个整数i转成字符串
* strings.Atoi(str string)(int, error):把一个字符串转成整数
- 安装开发环境
- 安装开发环境
- 安装详细教程
- 引入包
- Go语言基础
- 基本变量与数据类型
- 变量
- 数据类型
- 指针
- 字符串
- 代码总结
- 常量与运算符
- 常量
- 运算符
- 流程控制
- if判断
- for循环
- switch分支
- goto跳转
- 斐波那契数列
- Go语言内置容器
- 数组
- 切片
- 映射
- 函数
- 函数(上)
- 函数(中)
- 函数(下)
- 小节
- 包管理
- 结构体
- 结构体(上)
- 结构体(中)
- 结构体(下)
- 小节
- 错误处理
- 错误处理
- 宕机
- 错误应用
- 小节
- 文件操作
- 获取目录
- 创建和删除目录
- 文件基本操作(上)
- 文件基本操作(中)
- 文件基本操作(下)
- 处理JSON文件
- 接口与类型
- 接口的创建与实现
- 接口赋值
- 接口嵌入
- 空接口
- 类型断言(1)
- 类型断言(2)
- 小节
- 并发与通道
- goroutine协程
- runtime包
- 通道channel
- 单向通道channel
- select
- 线程同步
- 多线程的深入学习
- http编程
- http简介
- Client和Request
- get请求
- post请求
- 模块函数方法
- 模块
- fmt库,模块
- 项目练习
- 爬虫:高三网
- 爬虫:快代理
- 爬虫:快代理2
- 多线程:通道思路
- 多线程爬虫:快代理