golang strings包的基本操作

文章目录

      • golang 的字符串函数
        • EqualFold
        • HasPrefix
        • HasSuffix
        • Contains
        • ContainsRune
        • ContainsAny
        • Count
        • Index
        • IndexByte
        • IndexRune
        • IndexAny
        • IndexFunc
        • LastIndex
        • LastIndexAny
        • LastIndexFunc
        • Title
        • ToLower
        • ToLowerSpecial
        • ToUpper
        • ToUpperSpecial
        • ToTitle
        • ToTitleSpecial
        • Repeat
        • Replace
        • Map
        • Trim
        • TrimSpace
        • TrimFunc
        • TrimLeft
        • TrimPrefix
        • TrimRight
        • TrimRightFunc
        • TrimSuffix
        • Fields
        • Fields(s string) []string
        • FieldsFunc
        • Split
        • SplitN
        • SplitAfter
        • SplitAfterN
        • Reader
        • NewReader
        • (*Reader) Len
        • (*Reader) Read
        • (*Reader) ReadAt
        • Replacer
        • NewReplacer
        • (*Replacer) Replace
        • (*Replacer) WriteString

golang 的字符串函数

strings包实现了用于操作字符的简单函数.
golang 的字符串常用内建函数如下:

序号方法描述
1EqualFold判断两个utf-8编码字符串(将unicode大写、小写、标题三种格式字符视为相同)是否相同。
2HasPrefix判断s是否有前缀字符串prefix。
3HasSuffix判断s是否有后缀字符串suffix。
4Contains断字符串s是否包含子串substr
5ContainsRune判断字符串s是否包含utf-8码值r。
6ContainsAny判断字符串s是否包含字符串chars中的任一字符。
7Count返回字符串s中有几个不重复的sep子串。
8Index子串sep在字符串s中第一次出现的位置,不存在则返回-1。
9IndexByte字符c在s中第一次出现的位置,不存在则返回-1。
10IndexRuneunicode码值r在s中第一次出现的位置,不存在则返回-1。
11IndexAny字符串chars中的任一utf-8码值在s中第一次出现的位置,如果不存在或者chars为空字符串则返回-1。
12IndexFuncs中第一个满足函数f的位置i(该处的utf-8码值r满足f®==true),不存在则返回-1。
13LastIndex子串sep在字符串s中最后一次出现的位置,不存在则返回-1。
14LastIndexAny字符串chars中的任一utf-8码值在s中最后一次出现的位置,如不存在或者chars为空字符串则返回-1。
15LastIndexFuncs中最后一个满足函数f的unicode码值的位置i,不存在则返回-1。
16Title返回s中每个单词的首字母都改为标题格式的字符串拷贝。BUG: Title用于划分单词的规则不能很好的处理Unicode标点符号。
17ToLower返回将所有字母都转为对应的小写版本的拷贝。
18ToLowerSpecial使用_case规定的字符映射,返回将所有字母都转为对应的小写版本的拷贝。
19ToUpper返回将所有字母都转为对应的大写版本的拷贝。
20ToUpperSpecial使用_case规定的字符映射,返回将所有字母都转为对应的大写版本的拷贝。返回将所有字母都转为对应的大写版本的拷贝。
21ToTitle返回将所有字母都转为对应的标题版本的拷贝。
22ToTitleSpecial使用_case规定的字符映射,返回将所有字母都转为对应的标题版本的拷贝。
23Repeat返回count个s串联的字符串。
24Replace返回将s中前n个不重叠old子串都替换为new的新字符串,如果n<0会替换所有old子串。
25Map将s的每一个unicode码值r都替换为mapping®,返回这些新码值组成的字符串拷贝。如果mapping返回一个负值,将会丢弃该码值而不会被替换。(返回值中对应位置将没有码值)
26Trim返回将s前后端所有cutset包含的utf-8码值都去掉的字符串。
27TrimSpace返回将s前后端所有空白(unicode.IsSpace指定)都去掉的字符串。
28TrimFunc返回将s前后端所有满足f的unicode码值都去掉的字符串。
29TrimLeft返回将s前端所有cutset包含的utf-8码值都去掉的字符串。
30TrimLeftFunc返回将s前端所有满足f的unicode码值都去掉的字符串。
31TrimPrefix返回去除s可能的前缀prefix的字符串。
32TrimRight返回将s后端所有cutset包含的utf-8码值都去掉的字符串。
33TrimRightFunc返回将s后端所有满足f的unicode码值都去掉的字符串。
34TrimSuffix返回去除s可能的后缀suffix的字符串。
35Fields返回将字符串按照空白(unicode.IsSpace确定,可以是一到多个连续的空白字符)分割的多个字符串。如果字符串全部是空白或者是空字符串的话,会返回空切片。
36FieldsFunc类似Fields,但使用函数f来确定分割符(满足f的unicode码值)。如果字符串全部是分隔符或者是空字符串的话,会返回空切片。
37Split用去掉s中出现的sep的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。
38SplitN用去掉s中出现的sep的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。参数n决定返回的切片的数目: n > 0 : 返回的切片最多n个子字符串;最后一个子字符串包含未进行切割的部分。n == 0: 返回nil n < 0 : 返回所有的子字符串组成的切片
39SplitAfter用从s中出现的sep后面切断的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。
40SplitAfterN用从s中出现的sep后面切断的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。参数n决定返回的切片的数目:n > 0 : 返回的切片最多n个子字符串;最后一个子字符串包含未进行切割的部分。n == 0: 返回niln < 0 : 返回所有的子字符串组成的切
41Join将一系列字符串连接为一个字符串,之间用sep来分隔。

关于type Reader 和 type Replacer操作文档链接:
https://studygolang.com/pkgdoc

EqualFold

func EqualFold(s, t string) bool
判断两个utf-8编码字符串(将unicode大写、小写、标题三种格式字符视为相同)是否相同。

	var name1 = "艾拉"var name2 = "艾拉"var name3 = "伊雷娜"fmt.Println(strings.EqualFold(name1, name2))	// turefmt.Println(strings.EqualFold(name1, name3))	// false
HasPrefix

func HasPrefix(s, prefix string) bool
判断s是否有前缀字符串prefix。

	var name1 = "艾拉"var name2 = "伊"var name3 = "艾"fmt.Println(strings.HasPrefix(name1, name2))	// falsefmt.Println(strings.HasPrefix(name1, name3))	// true
HasSuffix

func HasSuffix(s, suffix string) bool
判断s是否有后缀字符串suffix。

	var name1 = "艾拉"var name2 = "拉"var name3 = "艾"fmt.Println(strings.HasSuffix(name1, name2)) // truefmt.Println(strings.HasSuffix(name1, name3)) // false
Contains

func Contains(s, substr string) bool
判断字符串s是否包含子串substr。
Contains() 函数用于检查字符串 str 是否包含子字符串 substr。
它基于字节的比较,判断 str 中是否存在与 substr 相同的字节序列。
判断一个字符串中是否包含一个普通的ASCII字符比ContainsRune更为高效

	var string1 = "可塑性记忆"var string2 = "记忆"var string3 = "艾"fmt.Println(strings.Contains(string1, string2))	// truefmt.Println(strings.Contains(string1, string3))	// false
ContainsRune

func ContainsRune(s string, r rune) bool
判断字符串s是否包含utf-8码值r。

	var string1 = "可塑性记忆"var string2 = '记' // 单引号 ' 用于表示一个 Unicode 码点,而双引号 " 用于表示一个字符串var string3 = '艾'fmt.Println(string2, string3)                       // 35760 33406fmt.Println(strings.ContainsRune(string1, string2)) // truefmt.Println(strings.ContainsRune(string1, string3)) // false
ContainsAny

func ContainsAny(s, chars string) bool
判断字符串s是否包含字符串chars中的任一字符。

	var string1 = "可塑性记忆"var string2 = "qwq记"fmt.Println(strings.ContainsAny(string1, string2)) // true// 简单的说string2 只要有一个字符在string1里面就会返回true,一个都没有就会返回false
Count

func Count(s, sep string) int
返回字符串s中有几个不重复的sep子串。

	var string1 = "可塑性记忆,艾拉艾拉"var string2 = "艾拉"fmt.Println(strings.Count(string1, string2)) // 2
Index

func Index(s, sep string) int
子串sep在字符串s中第一次出现的位置,不存在则返回-1。

	var string1 = "可塑性记忆,艾拉艾拉"var string2 = "艾拉"//在 UTF-8 编码中 中文字符占用 3 个字节,而英文字符占用 1 个字节.   5*3 + 1fmt.Println(strings.Index(string1, string2)) // 16var string3 = "yanilo"var string4 = "l"fmt.Println(strings.Index(string3, string4)) // 4
IndexByte

func IndexByte(s string, c byte) int
字符c在s中第一次出现的位置,不存在则返回-1。
IndexByte 是一个函数,用于在字节切片中查找指定字节的索引位置

	byteSlice := []byte{10, 20, 30, 40, 50}index := bytes.IndexByte(byteSlice, 30)fmt.Println(index) // 输出:2
IndexRune

func IndexRune(s string, r rune) int
unicode码值r在s中第一次出现的位置,不存在则返回-1。
IndexRune 是一个函数,字符串中使用 strings.IndexRune 函数查找 Unicode 字符的索引位置时,返回的索引位置是以 Unicode 码点为单位的,而不是字节位置

	str := "ke可塑性记忆,艾拉艾拉"index := strings.IndexRune(str, '艾')fmt.Println(index) // 输出:18
IndexAny

func IndexAny(s, chars string) int
字符串chars中的任一utf-8码值在s中第一次出现的位置,如果不存在或者chars为空字符串则返回-1。

	str := "ke可塑性记忆,艾拉艾拉"charset := "艾塑"index := strings.IndexAny(str, charset)fmt.Println(index) // 输出:5
IndexFunc

func IndexFunc(s string, f func(rune) bool) int
s中第一个满足函数f的位置i(该处的utf-8码值r满足f®==true),不存在则返回-1。

	f := func(c rune) bool {return unicode.Is(unicode.Han, c)}fmt.Println(strings.IndexFunc("Hello, 世界", f))    // 输出:7fmt.Println(strings.IndexFunc("Hello, world", f))   // 输出:-1
LastIndex

func LastIndex(s, sep string) int
子串sep在字符串s中最后一次出现的位置,不存在则返回-1。

	str := "Hello, Hello, Hello"substr := "Hello"lastIndex := strings.LastIndex(str, substr)fmt.Println(lastIndex) // 输出:14
LastIndexAny

func LastIndexAny(s, chars string) int
字符串chars中的任一utf-8码值在s中最后一次出现的位置,如不存在或者chars为空字符串则返回-1。

	str := "Hello, World!"chars := "o!"lastIndex := strings.LastIndexAny(str, chars)fmt.Println(lastIndex) // 输出:12
LastIndexFunc

func LastIndexFunc(s string, f func(rune) bool) int
s中最后一个满足函数f的unicode码值的位置i,不存在则返回-1。

	str := "Hello, World!"// unicode.IsSpace 是一个函数,用于判断一个 Unicode 字符是否为空格字符。lastIndex := strings.LastIndexFunc(str, unicode.IsSpace)fmt.Println(lastIndex) // 输出:6
Title

func Title(s string) string
返回s中每个单词的首字母都改为标题格式的字符串拷贝。

	str := "hello, world!"titleString := strings.Title(str)fmt.Println(titleString) // 输出:Hello, World!

BUG: Title用于划分单词的规则不能很好的处理Unicode标点符号。

ToLower

func ToLower(s string) string
返回将所有字母都转为对应的小写版本的拷贝。

	str := "Hello, World!"lowerString := strings.ToLower(str)fmt.Println(lowerString) // 输出:hello, world!
ToLowerSpecial

func ToLowerSpecial(_case unicode.SpecialCase, s string) string
使用_case规定的字符映射,返回将所有字母都转为对应的小写版本的拷贝。
ToLowerSpecial 是一个字符串处理函数,用于将字符串中的所有字符转换为小写形式,但可以指定特定的语言环境。

	str := "HÉLLÖ, WÖRLD!"locale := unicode.TurkishCaselowerString := strings.ToLowerSpecial(locale, str)fmt.Println(lowerString) // 输出:héllö, wörld!
ToUpper

func ToUpper(s string) string
返回将所有字母都转为对应的大写版本的拷贝。
ToUpper 是一个字符串处理函数,用于将字符串中的所有字符转换为大写形式。

	str := "Hello, World!"upperString := strings.ToUpper(str)fmt.Println(upperString) // 输出:HELLO, WORLD!
ToUpperSpecial

func ToUpperSpecial(_case unicode.SpecialCase, s string) string
使用_case规定的字符映射,返回将所有字母都转为对应的大写版本的拷贝。
ToUpperSpecial 是一个字符串处理函数,用于将字符串中的所有字符转换为大写形式,但可以指定特定的语言环境。

	str := "héllö, wörld!"locale := unicode.TurkishCaseupperString := strings.ToUpperSpecial(locale, str)fmt.Println(upperString) // 输出:HÉLLÖ, WÖRLD!
ToTitle

func ToTitle(s string) string
返回将所有字母都转为对应的标题版本的拷贝。

	str := "hello, world!"titleString := strings.ToTitle(str)fmt.Println(titleString) // 输出:HELLO, WORLD!
ToTitleSpecial

func ToTitleSpecial(_case unicode.SpecialCase, s string) string
使用_case规定的字符映射,返回将所有字母都转为对应的标题版本的拷贝。
ToTitleSpecial 是一个字符串处理函数,用于将字符串中的所有字符转换为标题形式,但可以指定特定的语言环境。

	str := "héllö, wörld!"locale := unicode.TurkishCasetitleString := strings.ToTitleSpecial(locale, str)fmt.Println(titleString) // 输出:HÉLLÖ, WÖRLD!
Repeat

func Repeat(s string, count int) string
返回count个s串联的字符串。
Repeat 是一个字符串处理函数,用于将指定的字符串重复多次以生成一个新的字符串。

	str := "hello"repeatedString := strings.Repeat(str, 3)fmt.Println(repeatedString) // 输出:hellohellohello
Replace

func Replace(s, old, new string, n int) string
返回将s中前n个不重叠old子串都替换为new的新字符串,如果n<0会替换所有old子串。
Replace 是一个字符串处理函数,用于将字符串中的指定子串替换为新的子串。

	str := "Hello, World!"newStr := strings.Replace(str, "World", "Golang", -1)fmt.Println(newStr) // 输出:Hello, Golang!
Map

func Map(mapping func(rune) rune, s string) string
将s的每一个unicode码值r都替换为mapping®,返回这些新码值组成的字符串拷贝。如果mapping返回一个负值,将会丢弃该码值而不会被替换。(返回值中对应位置将没有码值)
strings.Map 是 Go 语言中的一个字符串处理函数,用于对字符串中的每个字符执行指定的操作,并返回一个新的字符串。

	str := "Hello, World!"newStr := strings.Map(func(r rune) rune {if r == '!' {return '#'}return r}, str)fmt.Println(newStr) // 输出:Hello, World#
Trim

func Trim(s string, cutset string) string
返回将s前后端所有cutset包含的utf-8码值都去掉的字符串。
Trim 是一个常见的字符串处理操作,用于去除字符串的首尾指定字符或字符集合。

	str := "---   Hello, World!   ----"trimmedStr := strings.Trim(str, "-")fmt.Println(trimmedStr) // 输出:   Hello, World!trimmedStr2 := strings.Trim(trimmedStr, " ")fmt.Println(trimmedStr2) // 输出:Hello, World!
TrimSpace

func TrimSpace(s string) string
返回将s前后端所有空白(unicode.IsSpace指定)都去掉的字符串。
TrimSpace 是 Go 语言中的一个字符串处理函数,用于去除字符串首尾的空格符(包括空格、制表符和换行符)。

	str := "   Hello, World!   "trimmedStr := strings.TrimSpace(str)fmt.Println(trimmedStr) // 输出:Hello, World!
TrimFunc

func TrimFunc(s string, f func(rune) bool) string
返回将s前后端所有满足f的unicode码值都去掉的字符串。
TrimFunc 是 Go 语言中的一个字符串处理函数,用于根据自定义的函数逻辑来去除字符串的首尾字符。

	str := "   Hello, World!   "// unicode.IsSpace 是一个函数,用于判断一个 Unicode 字符是否为空格字符。trimmedStr := strings.TrimFunc(str, unicode.IsSpace)fmt.Println(trimmedStr) // 输出:Hello, World!
TrimLeft

func TrimLeft(s string, cutset string) string
返回将s前端所有cutset包含的utf-8码值都去掉的字符串。
TrimLeft 是 Go 语言中的一个字符串处理函数,用于去除字符串开头的指定字符。

	str := "!!!Hello, World!!!"trimmedStr := strings.TrimLeft(str, "!")fmt.Println(trimmedStr) // 输出:Hello, World!!!

func TrimLeftFunc
func TrimLeftFunc(s string, f func(rune) bool) string
返回将s前端所有满足f的unicode码值都去掉的字符串。
TrimLeftFunc 是 Go 语言中的一个字符串处理函数,用于根据自定义的函数逻辑来去除字符串开头的字符。

	str := "!!!Hello, World!!!"// unicode.IsPunct 是 Go 语言中的一个函数,用于判断给定的 Unicode 字符是否为标点符号。trimmedStr := strings.TrimLeftFunc(str, unicode.IsPunct)fmt.Println(trimmedStr) // 输出:Hello, World!!!
TrimPrefix

func TrimPrefix(s, prefix string) string
返回去除s可能的前缀prefix的字符串。
TrimPrefix 是 Go 语言中的一个字符串处理函数,用于去除字符串开头的指定前缀。

	str := "Hello, World!"trimmedStr := strings.TrimPrefix(str, "Hello, ")fmt.Println(trimmedStr) // 输出:World!
TrimRight

func TrimRight(s string, cutset string) string
返回将s后端所有cutset包含的utf-8码值都去掉的字符串。
TrimRight 是 Go 语言中的一个字符串处理函数,用于去除字符串末尾的指定字符集合。

	str := "Hello, World!!!"trimmedStr := strings.TrimRight(str, "!")fmt.Println(trimmedStr) // 输出:Hello, World
TrimRightFunc

func TrimRightFunc(s string, f func(rune) bool) string
返回将s后端所有满足f的unicode码值都去掉的字符串。
TrimRightFunc 是 Go 语言中的一个字符串处理函数,用于根据自定义的函数逻辑去除字符串末尾的字符。

	str := "Hello, World!!!"// unicode.IsPunct 是 Go 语言中的一个函数,用于判断给定的 Unicode 字符是否为标点符号。trimmedStr := strings.TrimRightFunc(str, unicode.IsPunct)fmt.Println(trimmedStr) // 输出:Hello, World
}
TrimSuffix

func TrimSuffix(s, suffix string) string
返回去除s可能的后缀suffix的字符串。
TrimSuffix 是 Go 语言中的一个字符串处理函数,用于去除字符串末尾的指定后缀。

	str := "Hello, World!!!"trimmedStr := strings.TrimSuffix(str, "!!!")fmt.Println(trimmedStr) // 输出:Hello, World
Fields
Fields(s string) []string

返回将字符串按照空白(unicode.IsSpace确定,可以是一到多个连续的空白字符)分割的多个字符串。如果字符串全部是空白或者是空字符串的话,会返回空切片。
strings.Fields 是 Go 语言中的一个字符串处理函数,用于将字符串按空白字符分割成多个子字符串,并返回一个子字符串的切片。

	str := "Hello   World\tGolang\nProgramming"fields := strings.Fields(str)fmt.Println(fields)		// [Hello World Golang Programming]for _, field := range fields {fmt.Println(field)//Hello//World//Golang//Programming}
FieldsFunc

func FieldsFunc(s string, f func(rune) bool) []string
类似Fields,但使用函数f来确定分割符(满足f的unicode码值)。如果字符串全部是分隔符或者是空字符串的话,会返回空切片。
FieldsFunc 是 Go 语言中的一个字符串处理函数,用于将字符串按照自定义的分隔函数进行分割,并返回一个子字符串的切片。

	str := "Hello, World! Golang Programming"// unicode.IsSpace 是 Go 语言中的一个函数,用于判断一个 Unicode 字符是否为空白字符。fields := strings.FieldsFunc(str, func(r rune) bool {return unicode.IsSpace(r) || r == '!'})fmt.Println(fields) // [Hello, World Golang Programming]for _, field := range fields {fmt.Println(field)// Hello,// World// Golang// Programming}
Split

func Split(s, sep string) []string
用去掉s中出现的sep的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。

	str := "Hello, World! Golang Programming"fields := strings.Split(str, ", ")fmt.Println(fields) // [Hello World! Golang Programming]for _, field := range fields {fmt.Println(field)// Hello// World! Golang Programming}
SplitN

func SplitN(s, sep string, n int) []string
用去掉s中出现的sep的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。参数n决定返回的切片的数目:
SplitN 是 Go 语言中的一个字符串处理函数,用于将字符串按照指定的分隔符进行分割,并返回一个子字符串的切片。与 Split 函数不同的是,SplitN 函数可以指定最大分割次数。
n > 0 : 返回的切片最多n个子字符串;最后一个子字符串包含未进行切割的部分。
n == 0: 返回nil
n < 0 : 返回所有的子字符串组成的切片

SplitN 是 Go 语言中的一个字符串处理函数,用于将字符串按照指定的分隔符进行分割,并返回一个子字符串的切片。与 Split 函数不同的是,SplitN 函数可以指定最大分割次数。

	str := "Hello, World! Golang Programming"fields := strings.SplitN(str, ", ", 2)fmt.Println(fields) // [Hello World! Golang Programming]for _, field := range fields {fmt.Println(field)// Hello// World! Golang Programming}
SplitAfter

func SplitAfter(s, sep string) []string
用从s中出现的sep后面切断的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。
SplitAfter 是 Go 语言中的一个字符串处理函数,用于将字符串按照指定的分隔符进行分割,并返回一个子字符串的切片。与 Split 函数不同的是,SplitAfter 函数在分割时会保留分隔符。

	str := "Hello, World! Golang Programming."fields := strings.SplitAfter(str, ", ")fmt.Println(fields) // [Hello,  World! Golang Programming.]for _, field := range fields {fmt.Println(field)// Hello,// World! Golang Programming.}
SplitAfterN

func SplitAfterN(s, sep string, n int) []string
用从s中出现的sep后面切断的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。参数n决定返回的切片的数目:

n > 0 : 返回的切片最多n个子字符串;最后一个子字符串包含未进行切割的部分。
n == 0: 返回nil
n < 0 : 返回所有的子字符串组成的切
Example
func Join
func Join(a []string, sep string) string
将一系列字符串连接为一个字符串,之间用sep来分隔。

SplitAfterN 是 Go 语言中的一个字符串处理函数,用于将字符串按照指定的分隔符进行分割,并返回一个子字符串的切片。与 SplitN 函数不同的是,SplitAfterN 函数在分割时会保留分隔符。

	str := "Hello, World! Golang Programming."fields := strings.SplitAfterN(str, ", ", 2)fmt.Println(fields) // [Hello,  World! Golang Programming.]for _, field := range fields {fmt.Println(field)// Hello,// World! Golang Programming.}
Reader

type Reader struct {
// 内含隐藏或非导出字段
}
Reader类型通过从一个字符串读取数据,实现了io.Reader、io.Seeker、io.ReaderAt、io.WriterTo、io.ByteScanner、io.RuneScanner接口。
Reader 是 Go 语言中的一个接口(interface),定义了读取操作的基本方法。Reader 接口可以用于从不同的数据源(如文件、网络连接、内存等)读取数据。

	reader := strings.NewReader("Hello, World!")buffer := make([]byte, 5)for {n, err := reader.Read(buffer)if err == io.EOF {break}/*io.EOF 是 Go 语言中的一个预定义错误变量,表示输入或输出操作已达到文件末尾(End of File)。EOF 是 "End of File" 的缩写。当读取操作(如从文件、网络连接或其他数据源读取数据)达到文件末尾时,读取函数通常会返回 io.EOF 错误,以指示已经读取完所有的数据。*/fmt.Printf("Read %d bytes: %s\n", n, buffer[:n])// Read 5 bytes: Hello// Read 5 bytes: , Wor// Read 3 bytes: ld!}
NewReader

func NewReader(s string) *Reader
NewReader创建一个从s读取数据的Reader。本函数类似bytes.NewBufferString,但是更有效率,且为只读的。

(*Reader) Len

func (r *Reader) Len() int
Len返回r包含的字符串还没有被读取的部分。

(*Reader) Read

func (r *Reader) Read(b []byte) (n int, err error)
func (*Reader) ReadByte
func (r *Reader) ReadByte() (b byte, err error)
func (*Reader) UnreadByte
func (r *Reader) UnreadByte() error
func (*Reader) ReadRune
func (r *Reader) ReadRune() (ch rune, size int, err error)
func (*Reader) UnreadRune
func (r *Reader) UnreadRune() error
func (*Reader) Seek
func (r *Reader) Seek(offset int64, whence int) (int64, error)
Seek实现了io.Seeker接口。

(*Reader) ReadAt

func (r *Reader) ReadAt(b []byte, off int64) (n int, err error)
func (*Reader) WriteTo
func (r *Reader) WriteTo(w io.Writer) (n int64, err error)
WriteTo实现了io.WriterTo接口。

Replacer

type Replacer struct {
// 内含隐藏或非导出字段
}
Replacer类型进行一系列字符串的替换。

NewReplacer

func NewReplacer(oldnew …string) Replacer
使用提供的多组old、new字符串对创建并返回一个
Replacer。替换是依次进行的,匹配时不会重叠。

(*Replacer) Replace

func (r *Replacer) Replace(s string) string
Replace返回s的所有替换进行完后的拷贝。

(*Replacer) WriteString

func (r *Replacer) WriteString(w io.Writer, s string) (n int, err error)
WriteString向w中写入s的所有替换进行完后的拷贝。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/188178.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文读懂设备巡检的主要内容

在现代企业和组织中&#xff0c;设备的正常运行是业务持续发展的关键&#xff0c;尤其是制造业&#xff0c;由于其发展趋势不断机械化、自动化、大型化、高速化和复杂化&#xff0c;对设备巡检的要求越来越高。然而&#xff0c;在信息化时代&#xff0c;很多企业目前仍采用纸笔…

GPT实战系列-大模型训练和预测,如何加速、降低显存

GPT实战系列-大模型训练和预测&#xff0c;如何加速、降低显存 不做特别处理&#xff0c;深度学习默认参数精度为浮点32位精度&#xff08;FP32&#xff09;。大模型参数庞大&#xff0c;10-1000B级别&#xff0c;如果不注意优化&#xff0c;既耗费大量的显卡资源&#xff0c;…

Python应用:利用matplotlib画学生成绩分布饼图

1. 题目 给定一组学生成绩&#xff1a;[85, 92, 78, 65, 95, 88, 72, 60, 98, 45, 100, 46, 23, 88, 67, 89, 67, 88, 99]&#xff0c;现在评分等级为优&#xff08;90-100&#xff09;、良&#xff08;70-89&#xff09;、及格&#xff08;60-69&#xff09;、不及格&#xff…

玩转大数据4:大数据的崛起与应用领域探索

图片来源网络 引言 在当今数字化时代&#xff0c;大数据正以前所未有的速度和规模崛起。大数据的出现不仅改变了企业和组织的经营模式&#xff0c;也对我们的社会生活带来了深刻的影响。Java作为一种广泛使用的编程语言&#xff0c;在大数据领域发挥着重要的作用。本文将重点…

【android开发-02】android中OptionMenu用法介绍

Option Menu 是 Android 中一种常用的菜单方式&#xff0c;它通常用于在屏幕的顶部显示一个下拉菜单&#xff0c;提供一些常用的功能或操作选项。菜单里的菜单项默认不会显示出来&#xff0c;需要点击右上角三个点的菜单按钮。以下是一些使用 Option Menu 的基本步骤&#xff1…

树莓派,linux换清华源

清华源网址 https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/ 更换软件源 鉴于国内网络环境下载各大镜像&#xff0c;软件包速度慢的问题&#xff0c;需要更换软件源&#xff0c;以防下载慢&#xff0c;且在本教程中&#xff0c;统一更换为清华源。 2.3.1 更换树莓派软…

工程师每日刷题 -4

文章目录 1、深度学习2、算法与数据结构2.1、暴力解法2.2、滑动窗口法 3、编程基础 1、深度学习 问题&#xff1a;CNN的本质和优势&#xff1f; CNN 本质上是一个多层感知机 (MLP)&#xff0c;其成功的原因关键在于它所采用的【稀疏连接】&#xff08;局部感受&#xff09;和…

【带头学C++】----- 九、类和对象 ---- 9.3 析构函数

9.3 析构函数 9.3.1 如何定义析构函数 函数名和类名称相同&#xff0c;在函数名前加 ~ &#xff0c;没有返回值类型&#xff0c;没有函数形参。 (不能被重载) 当对象生命周期结束的时候&#xff0c;系统自动调用析构函数&#xff08;析构函数会先清理对象占用内存空间存放的…

【openssl】Window系统如何编译openssl

本文主要记录如何编译出windows版本的openss的lib库 1.下载openssl&#xff0c;获得openssl-master.zip。 a.可以通过github&#xff08;网址在下方&#xff09;上下载最新的代码、今天是2023.12.1我用的master版本&#xff0c;下载之后恭喜大侠获得《openssl-master.zip》 …

测试-感受生产者消费者模型-阻塞队列

Testpublic void test() throws InterruptedException {// 创建一个阻塞队列// 编写1个生产者-3个消费者的模型BlockingQueue<String> queue new ArrayBlockingQueue<>(3);// 1个生产者new Thread(() -> {// 生产20个元素for (int i 0; i < 20; i) {try {/…

高效学习 React 框架AntDesign Pro

高效学习 用框架做项目。 第一步命令行运行下列命令&#xff0c;快速启动开发服务 $ npm i ant-design/pro-cli -g $ pro create my-app$ cd my-app $ npm i $ npm run start # 打开浏览器访问 http://localhost:8000 # 如果安装过程中出现报错&#xff0c;请更新包$ npm upd…

快递物流模拟系统

快递物流模拟系统 文章目录 快递物流模拟系统一、目的二、技术实现&#xff1a;三、网页功能具体介绍 一、目的 调用百度地图 JavaScript API 创建的简单的基站物流GPS定位与监控系统的示例网页 二、技术实现&#xff1a; 使用百度地图 JavaScript API 版本 2.0。利用 BMap …

Webpack——Webpack简介

1、什么是Webpack&#xff1f; Webpack是一个开源的JavaScript模块打包工具&#xff0c;其最核心的功能是解决模块之间的依赖&#xff0c;把各个模块按照特定的规则和顺序组织在一起&#xff0c;最终合并为一个JS文件&#xff08;有时会有多个&#xff0c;这里讨论的只是最基本…

SQL Sever 基础知识 - 数据排序

SQL Sever 基础知识 - 二 、数据排序 二 、对数据进行排序第1节 ORDER BY 子句简介第2节 ORDER BY 子句示例2.1 按一列升序对结果集进行排序2.2 按一列降序对结果集进行排序2.3 按多列对结果集排序2.4 按多列对结果集不同排序2.5 按不在选择列表中的列对结果集进行排序2.6 按表…

人才缺口达150万!云计算凭什么这么火?

《中国互联网发展报告2022》指出&#xff0c;2021年&#xff0c;我国云计算市场规模达到3229亿元&#xff0c;增速为54.4%。未来5年内&#xff0c;我国云计算产业将面临高达近150万的人才缺口&#xff0c;预计未来市场仍将保持30%的增速。与此同时&#xff0c;随着大数据、人工…

【每日OJ —— KY11 二叉树遍历】

每日OJ —— KY11 二叉树遍历 1.题目&#xff1a;KY11 二叉树遍历2.解法2.1.算法讲解2.2.代码实现2.3.提交通过展示 1.题目&#xff1a;KY11 二叉树遍历 2.解法 2.1.算法讲解 1.首先需要创建二叉树结构。 2.其次&#xff0c;根据题目根据题目遍历的顺序要求来实现构建二叉树的…

代码demo-内部订单批量投料

为了简化用户操作&#xff0c;开发内部订单批量投料功能 用户可以批量上传&#xff0c;或者选择对应的物料&#xff0c;输入库位和内部订单号后进行过账操作 对用户选择的内部订单做校验&#xff0c;内部订单是否正确 内部订单的公司是否和工厂对应的公司一致等等 下面展示…

Sui与阿联酋科技孵化器Hub71合作支持生态项目建设,扩大全球影响力

近日&#xff0c;总部位于阿联酋&#xff08; United Arab Emirates &#xff0c;UAE&#xff09;的科技孵化器Hub71宣布与Mysten Labs合作&#xff0c;将支持Sui上的新项目。通过本次合作&#xff0c;孵化项目的开发者们不仅可以获得Mysten Labs的技术专业知识和支持&#xff…

mysql多版本并发控制mvcc

MySQL 使用了多版本并发控制&#xff08;MVCC&#xff0c;Multi-Version Concurrency Control&#xff09;机制来处理并发修改。MVCC 提供了一种并发控制方式&#xff0c;允许多个事务同时读取和修改数据库&#xff0c;同时保持数据的一致性和隔离性。下面是 MySQL 中 MVCC 的一…

谷歌开发者账号防关联所用的VPS,哪个性价比最高?阿里云、腾讯云、亚马逊云、酷鸟云……

对于通过马甲包或矩阵方式在Google play应用商店发布应用的开发者而言&#xff0c;需要多个开发者账号来上架发布应用&#xff0c;但根据谷歌相关政策&#xff0c;不允许一个用户拥有或操弄多个账号&#xff0c;因此需要从各方面做好多账号的防关联工作&#xff0c;避免被谷歌系…