zoukankan      html  css  js  c++  java
  • 查漏补缺之Go的Strings, bytes, runes和字符

    Go语言中有单个字符和ascii码值直接转换的方法吗?

    // 附录1
    golang的字符称为rune,等价于C中的char,可直接与整数转换。

        var c rune='a' 
        var i int =98
        i1:=int(c)
        fmt.Println("'a' convert to",i1)
        c1:=rune(i)
        fmt.Println("98 convert to",string(c1))
        //string to rune
        for _, char := range []rune("世界你好") {
            fmt.Println(string(char))
        }
    

    字节遍历,字符遍历

    https://play.golang.org/p/DeZcCN9aHXo

    package main
    
    import (
    	"fmt"
    	"unicode/utf8"
    )
    
    func main() {
    	s := "充气nb1"
    	// 字节遍历
    	for i := 0; i < len(s); i++ {
    		fmt.Println(s[i])
    	}
    	// 字符遍历
    	fmt.Println("len:", len(s))
    	for i, k := range s {
    		fmt.Println(i, k)
    	}
    
    	// 字节遍历2
    	for i, w := 0, 0; i < len(s); i += w {
    		runeValue, width := utf8.DecodeRuneInString(s[i:])
    		fmt.Printf("%#U starts at byte position %d
    ", runeValue, i)
    		w = width
    	}
    }
    

    总结

    1. golang的string是以UTF-8编码的,而UTF-8是一种1-4字节的可变长字符集,每个字符可用1-4字节 来表示

    2. 使用下标方式s[i]访问字符串s,s[i]是UTF-8编码后的一个字节(uint8),即按字节遍历

    3. 使用for i,v := range s 方式访问s,i是字符串下标编号,v是对应的字符值(int32=rune),即按字符遍历

    4. 使用fmt.Printf打印时,%c占位符打印的是字符,%+v占位符打印的是这个类型自身,如fmt.Printf("%+v",s[i])打印的就是字节一个十进制的无符号整数s[i]

    5. 如果希望以随机方式访问字符串s的每个字符,可以先转为[]rune数组,再以下标访问

    参考资料

    聊聊go语言的Strings、bytes、runes和字符

    unicode/utf8官网

    其他

    全面认识golang string

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        s := "测试"
        fmt.Println(s)
        fmt.Println(len(s))
        fmt.Println(s[0])
        for _, v := range s {
            fmt.Println(v)
        }
    }
    

    参考

    1.rune ascll

  • 相关阅读:
    Windows Server 2012 R2 或 2016 无法安装 .Net 3.5.1
    织梦DeDeCms会员登录或退出跳转到首页的修改方法
    use ngCordova in ionic
    Angular2 Todo App
    use traceur in ES6
    Angular2 Use styles in Component
    Angular2 use ng-xx (ng-if)
    Angular2 Router
    Angular2 Http
    1 TypeScript SetUp for Webstorm
  • 原文地址:https://www.cnblogs.com/yudidi/p/12177359.html
Copyright © 2011-2022 走看看