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表示要转换的类型。表达式包括变量、复杂算子和函数返回值等.

posted @ 2021-05-16 21:10  lttL  阅读(175)  评论(0)    收藏  举报