go语言源码赏析之strings
Posted chenguifeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言源码赏析之strings相关的知识,希望对你有一定的参考价值。
0.字符串为不可变类型,内部使用指针指向UTF-8字节数组
不过要修改字符串可以先将其转换成[]byte或者[]rune。如下
package main func main() { s := "abcd" bs := []byte(s) bs[1] = ‘B‘ println(string(bs)) u := "电脑" us := []rune(u) us[1] = ‘话‘ println(string(us)) }
输出:
aBcd
电话
for遍历字符串有byte和rune两种方式,见代码
package main import ( "fmt" ) func main() { s := "abc汉字" for i := 0; i < len(s); i++ { // byte fmt.Printf("%c,", s[i]) } fmt.Println() for _, r := range s { // rune fmt.Printf("%c,", r) } fmt.Println() }
输出
a,b,c,æ,±,?,å,,?, a,b,c,汉,字,
一些常用接口
1.判断是不是以某个字符串开头
package main import ( "fmt" "strings" ) func main() { str := "hello world" res0 := strings.HasPrefix(str, "http://") res1 := strings.HasPrefix(str, "hello") fmt.Printf("res0 is %v ", res0) fmt.Printf("res1 is %v ", res1) }
输出
res0 is false res1 is true
源码片段
// HasPrefix tests whether the string s begins with prefix. func HasPrefix(s, prefix string) bool { return len(s) >= len(prefix) && s[0:len(prefix)] == prefix }
2.判断是不是以某个字符串结尾
package main import ( "fmt" "strings" ) func main() { str := "hello world" res0 := strings.HasSuffix(str, "http://") res1 := strings.HasSuffix(str, "world") fmt.Printf("res0 is %v ", res0) fmt.Printf("res1 is %v ", res1) }
输出
res0 is false res1 is true
源码片段
// HasSuffix tests whether the string s ends with suffix. func HasSuffix(s, suffix string) bool { return len(s) >= len(suffix) && s[len(s)-len(suffix):] == suffix }
待续...
以上是关于go语言源码赏析之strings的主要内容,如果未能解决你的问题,请参考以下文章