go基础-字符串
fmt常用占位符
package main
import "fmt"
func main() {
var n = 10
var s = "hello worlf"
var f = 1.1000
var c = "钗头凤"
fmt.Printf("%T\n", n) //打印类型
fmt.Printf("%b\n", m) //打印二进制
fmt.Printf("%d\n", n) //打印十进制
fmt.Printf("%o\n", n) //打印八进制
fmt.Printf("%x\n", n) //打印十六进制
fmt.Printf("%s\n", s) //打印字符串
fmt.Printf("%v\n", s) //相应值的默认格式
fmt.Printf("%#v\n", s) //相应值的Go语法表示
fmt.Printf("%#v\n", s) //打印结构体时,会添加字段名
fmt.Printf("%f\n", f) //打印浮点型
fmt.Printf("%.2f", f) //打印浮点型,保留两位小数
fmt.Printf("%c\n", c) //相应Unicode码点所表示的字符
}
定义多行字符串
打印多行字符串时使用反引号`
s = `
云想衣裳花想容,春风拂槛露华浓。
若非群玉山头见,会向瑶台月下逢。
`
fmt.Println(s)
字符与字符串
go语言中字符串用双引号包裹,单引号包裹的时字符
//字符串
s := "hello world"
//字符
c := 'h'
//1字节=8bit
//1英文字符=1字节
//1汉字一般等于3到4个字节
go的字符类型主要有两种
- uint8,也叫byte类型,代表一个ascii码一个字符
- rune字符,实际是个int32,代表一个UTF-8字符
有汉字的情况下遍历字符串
package main
import "fmt"
func main() {
s := "hello go 语言"
for i := 0; i < len(s); i++ {
fmt.Printf("%v:%c", s[i], s[i])
fmt.Printf("\n")
}
fmt.Printf("\n")
fmt.Printf("\n")
fmt.Printf("\n")
for k,r := range s {
fmt.Printf("%d---%v:%c", k, r, r)
fmt.Printf("\n")
}
}
结果
字符串常用操作
方法 | 介绍 |
---|---|
len(str) | 字符串长度 |
strings.Split | 分割字符串 |
strings.contains | 判断是否包含 |
+或fmt.Sprintf | 拼接字符串 |
strings.HasPrefix,strings.HasSuffix | 前后缀判断 |
strings.Index(),strings.LastIndex() | 子串出现的位置 |
strings.Join(a[]string, sep string) | join操作 |
修改字符串
字符串本身不可修改,要修改字符串需要先将其转换成[]rune或[]byte类型修改,然后再转换回来
package main
import "fmt"
func main() {
s1 := "hello go"
sb1 := []byte(s1)
sb1[2] = 'W'
fmt.Println(string(sb1))
s2 := "世情恶人情薄"
sb2 := []rune(s2)
sb2[2] = '事'
fmt.Println(string(sb2))
}
字符串转换
Go语言中只有强制类型转换,没有隐式类型转换。该语法只能在两个类型之间支持相互转换的时候使用
T(表达式)
其中,T表示要转换的类型。表达式包括变量、复杂算子和函数返回值等.