Skip to content

Go string和fmt 详解

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

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

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

string

定义

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

通过:=赋值给变量

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

打印结果:

css
i'm ok

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

go

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

打印结果:

![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bdd624f346e8421d8d16499de0796581~tplv-k3u1fbpfcp-zoom-in-crop-mark:1512:0:0:0.awebp?)

## 使用\`原样输出字符串\`

``` bash

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

打印结果:

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

使用 \ 作为转义标识符

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

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

image.png

打印结果:

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

字符串常用操作

长度使用len()

go

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

打印结果:66

## 拼接使用+或者Sprintf

``` arduino
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

包含判断

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

打印结果都是:false

子串出现的位置

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

打印结果:2 5

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

go

```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

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

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

fmt

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

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

数值相关

swift
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

输出结果:

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

字符串相关

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

输出结果:

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

最后

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

8e95dac1fd0b2b1ff51c08757667c47a.gif

🚀 学习遇到瓶颈?想进大厂?

看完这篇技术文章,如果还是觉得不够系统,或者想在实战中快速提升?
王中阳的就业陪跑训练营,提供定制化学习路线 + 企业级实战项目 + 简历优化 + 模拟面试。

了解训练营详情