go之字符串

len

  字符串长度,len指的是字节

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main
 
import (
    "fmt"
    "unicode/utf8"
)
 
func main() {
    var s ="hello world"
    fmt.Println(len(s))  //11  11个字符,11 字节
    var s1 ="hello world 中国"
    fmt.Println(len(s1))  //18  14个字符,18 字节  ,utf-8编码一个中文字符,占3个字节
    fmt.Println(utf8.RuneCountInString(s1))  //// run 是字符  14
}

for循环字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package main
 
import (
    "fmt"
    "unicode/utf8"
)
 
func main() {
    var s ="hello world"
    var s1 ="hello world 中国"
    for _,v:=range s{  // range循环的就是字符
        fmt.Println(string(v))
    }
    for i:=0;i<len(s);i++{  // 按字节循环,转成字符串会出乱码
        fmt.Println(string(s[i]))
    }
    for i:=0;i<utf8.RuneCountInString(s);i++{  // 按字节循环,转成字符串会出乱码
        fmt.Println(string(s[i]))  // 按字节取,取出来转还是有问题,还是要用range循环
    }
    for _,v:=range s1{
        fmt.Println(string(v))
    }
    for i:=0;i<len(s1);i++{
        fmt.Println(string(s1[i]))
    }
    for i:=0;i<utf8.RuneCountInString(s1);i++{
        fmt.Println(string(s1[i]))
    }
}

字符串是不可变的

1
2
3
4
5
6
7
8
9
10
11
package main
 
import (
    "fmt"
)
 
func main() {
    var s ="hello world 中国"
    //s[0]='h'
    fmt.Println(s[0])  // s是unicode编码的104
}

通过字节切片

1
2
3
4
5
6
7
8
9
10
package main
 
import (
    "fmt"
)
 
func main() {
    var b []byte=[]byte{104,105,106,'a'}
    fmt.Println(string(b))  //hija
}

根据字符切片构造

1
2
3
4
5
6
7
8
9
10
package main
 
import (
    "fmt"
)
 
func main() {
    var b []rune=[]rune{104,105,10688,'中'}
    fmt.Println(string(b))  //hij中
}

字符串和字节切片,和字符切片相互转换

  根据字符取值,没有操作,转成字符切片,再取

1
2
3
4
5
6
7
8
9
10
11
12
package main
 
import (
    "fmt"
)
 
func main() {
    var s ="hello world 中国"
    var b []rune=[]rune(s)
    fmt.Println(b[12])  //20013
    fmt.Println(string(b[13]))  //国
} 
1
2
3
4
5
6
7
8
9
10
11
12
package main
 
import (
    "fmt"
)
 
func main() {
    var s ="hello world 中国"
    var b []byte=[]byte(s)
    fmt.Println(b[10])  //100
    fmt.Println(string(b[10]))  //d
}

  

posted @   那就凑个整吧  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示