Go string和fmt 详解

684 阅读2分钟

这是我参与2022首次更文挑战的第20天,活动详情查看:2022首次更文挑战」。

每个编程语言中 string 都是最常用类型之一;对数据进行格式化输出的常用操作。

今天介绍Go常用的字符串string和数据格式化类fmt

string

定义

由双引号包裹的内容就是字符串

通过:=赋值给变量

s := "i'm ok"
fmt.Println(s)

打印结果:

i'm ok

定义多行字符串,按预制格式输出

s2 := `
   王
      中
         阳
`
fmt.Println(s2)

打印结果:

image.png

使用`原样输出字符串`

s3 := `/Users/wangzhongyang/Code/go/src/github.com/studygo/day01/08string`
fmt.Println(s3)

打印结果:

/Users/wangzhongyang/Code/go/src/github.com/studygo/day01/08string

使用 \ 作为转义标识符

path := ""\Users\wangzhongyang\Code\go\src\github.com\studygo\day01\07fmt""
fmt.Println(path)

发现复制GOland的代码到markdown会如下自动转义,所以附上我Goland中的代码截图:

image.png

打印结果:

"\Users\wangzhongyang\Code\go\src\github.com\studygo\day01\07fmt"

字符串常用操作

长度使用len()

s3 := `/Users/wangzhongyang/Code/go/src/github.com/studygo/day01/08string`

fmt.Println(len(s3))

打印结果:66

拼接使用+或者Sprintf

name := "产品经理"
word := "Lucky"
ss := name + word
fmt.Println(name + word)
fmt.Println(ss)
ss1 := fmt.Sprintf("%s%s", name, word) //和Printf相比在开头多了一个 S
fmt.Println(ss1)

打印结果都是:产品经理Lucky

注意:注意fmt拼接字符串的函数和Printf相比在开头多了一个S

包含判断

ss := "产品经理Lucky"
fmt.Println(strings.Contains(ss, "王中阳")) //是否包含指定字符串
fmt.Println(strings.HasPrefix(ss, "王中阳")) //是否以指定字符串开头
fmt.Println(strings.HasSuffix(ss, "王中阳")) //是否以指定字符串结尾

打印结果都是:false

子串出现的位置

s4 := "abcdecd"
s5 := "cd"
fmt.Println(strings.Index(s4, s5))     //第一次出现的位置
fmt.Println(strings.LastIndex(s4, s5)) //最后一次出现的位置

打印结果:2 5

字符串转数组(分割字符转) Split

s3 := `/Users/wangzhongyang/Code/go/src/github.com/studygo/day01/08string`
ret := strings.Split(s3, "/")
fmt.Println(ret)

打印结果:[ Users wangzhongyang Code go src github.com studygo day01 08string]

数组转字符串(拼接字符转)Join

fmt.Println(strings.Join(ret, "-"))

打印结果:-Users-wangzhongyang-Code-go-src-github.com-studygo-day01-08string

fmt

Go的fmt是常用的格式化代码工具

今天介绍一下fmt的日常用法:fmt.Printf()

数值相关

n := 100
fmt.Printf("类型:%T\n", n) //类型
fmt.Printf("值:%v\n", n) //值
fmt.Printf("二进制:%b\n", n) //二进制binary
fmt.Printf("十进制:%d\n", n) //十进制decimal
fmt.Printf("八进制:%o\n", n) //八进制Octal
fmt.Printf("十六进制:%x\n", n) //十六进制Hexadecimal

输出结果:

类型:int
值:100
二进制:1100100
十进制:100
八进制:144
十六进制:64

字符串相关

s := "wangzhongyang"
fmt.Printf("字符串:%s\n", s)  //字符串
fmt.Printf("值:%v\n", s)  //值
fmt.Printf("字符:%#c\n", s) //字符
fmt.Printf("值 另外返回类型的标识符:%#v\n", s) //值 另外返回类型的标识符

输出结果:

字符串:wangzhongyang
值:wangzhongyang
字符:%!c(string=wangzhongyang)
值 另外返回类型的标识符:"wangzhongyang"

最后

感谢阅读,欢迎大家三连:点赞、收藏、投币(关注)!!!

8e95dac1fd0b2b1ff51c08757667c47a.gif