go string 使用
golang string 使用样例
package main
import (
"bytes"
"fmt"
"strings"
"testing"
)
func TestSringTrim(t *testing.T) {
result := strings.Trim(strings.Replace("\\home\\kyle\\", "\\", "/", 2), "/")
fmt.Println(result)
}
/**
Go语言字符串字面量
在Go语言中,字符串字面量使用双引号""或者反引号``(esc下面的那个)来创建。
双引号用来创建可解析的字符串,支持转义,但不能用来引用多行;
反引号用来创建原生的字符串字面量,可能有多行组成,但不支持转义,并且可以包含除了反引号外其他的所有字符。
双引号创建可解析的字符串应用最广泛,反引号用来创建原生的字符串则多用于书写多行消息、HTML以及正则表达式。
*/
func TestSringLine(t *testing.T) {
var str0 string = "hello world"
var str1 = "hello world"
str2 := "hello world"
fmt.Printf("s: %v\n", str0)
fmt.Printf("s1: %v\n", str1)
fmt.Printf("s2: %v\n", str2)
str4 := `
line1
line2
line3
`
fmt.Printf("s4: %v\n", str4)
}
/**
go语言字符串连接
*/
func TestSringAdd(t *testing.T) {
/**
字符串连接 + 和 +=
golang里面的字符串都是不可变的,每次运算都会产生一个新的字符串,所以会产生很多临时的无用的字符串,不仅没有用,还会给gc带来额外的负担,所以性能比较差
*/
str1 := "tom"
str2 := "20"
msg0 := str1 + str2
fmt.Printf("msg0: %v\n", msg0)
msg1 := ""
msg1 += str1
msg1 += " "
msg1 += str2
fmt.Printf("msg1: %v\n", msg1)
/**
字符串拼接
内部使用[]byte实现,不像直接运算符这种会产生很多临时的字符串,但是内部的逻辑比较复杂,有很多额外的判断,还用到了interface,所以性能也不是很好
*/
str3 := "tom"
str4 := "20"
msg2 := fmt.Sprintf("%s, %s", str3, str4)
fmt.Printf("msg2: %v\n", msg2)
/**
strings.Join()
join会先根据字符串数组的内容,计算出一个拼接之后的长度,然后申请对应大小的内存,一个一个字符串填入,在已有一个数组的情况下,这种效率会很高,但是本来没有,去构造这个数据的代价也不小
*/
name := "tom"
age := "20"
msg3 := strings.Join([]string{name, age}, ",")
fmt.Printf("msg3: %v\n", msg3)
/**
buffer.WriteString()
这个比较理想,可以当成可变字符使用,对内存的增长也有优化,如果能预估字符串的长度,还可以用buffer.Grow()接口来设置capacity
*/
var buffer bytes.Buffer
buffer.WriteString("tom")
buffer.WriteString(",")
buffer.WriteString("20")
fmt.Printf("buffer.String(): %v\n", buffer.String())
}
// 常用方法
func TestSringsMethod(t *testing.T) {
str0 := "hello world"
fmt.Printf("len(str0): %v\n", len(str0))
str1 := "go"
msg := fmt.Sprintf("%s, %s", str0, str1)
fmt.Printf("msg: %v\n", msg)
fmt.Printf("strings.Split(str0, \" \"): %v\n", strings.Split(str0, " "))
fmt.Printf("strings.HasPrefix(\"hello\"): %v\n", strings.HasPrefix(str0, "hello"))
fmt.Printf("strings.HasSuffix(str0, \"ld\"): %v\n", strings.HasSuffix(str0, "ld"))
fmt.Printf("strings.Index(str0, \"l\"): %v\n", strings.Index(str0, "l"))
fmt.Printf("strings.LastIndex(str0, \"l\"): %v\n", strings.LastIndex(str0, "l"))
fmt.Printf("strings.ToUpper(str0): %v\n", strings.ToUpper(str0))
fmt.Printf("strings.ToLower(str0): %v\n", strings.ToLower(str0))
}
测试
执行测试代码 go test -v string_test.go
可以查看执行结果
go test 使用请看:go test 使用
golang 使用样例汇总:go test
你可能感兴趣的文章
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦