zoukankan      html  css  js  c++  java
  • golang 中的引号

    前言

    go中的单引号',双引号",反引号`,他们用法的区别。
    需要先了解字符编码的区别,由来。

    单引号

    单引号里面只能有一个字符,一般只能用来包裹一个字节的ASCII码字符。他的类型是Golang的一个特殊类型:rune,也就是int32。例如

    package main
    
    import "fmt"
    
    func main() {
            s := 'A' 
            fmt.Printf("type : %T, value: %s
    ", s, s)
            fmt.Printf("type : %T, value: %d
    ", s, s)
            fmt.Printf("type : %T, value: %c
    ", s, s)
    }
    
    /*
    输出:
    type : int32, value: %!s(int32=65)
    type : int32, value: 65
    type : int32, value: A    
    */
    

    双引号

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	s := "你Hello"
    	fmt.Printf("type : %T, value: %s
    ", s, s)
    	fmt.Printf("type : %T, value: %d
    ", s[0], s[0])
    	fmt.Printf("type : %T, value: %c
    ", s[0], s[0])
    	u_s := []rune(s)
    	fmt.Printf("type : %T, value: %s
    ", u_s[0], u_s[0])
    	fmt.Printf("type : %T, value: %d
    ", u_s[0], u_s[0])
    	fmt.Printf("type : %T, value: %c
    ", u_s[0], u_s[0])
    }
    /*
    输出:
    type : string, value: 你Hello
    type : uint8, value: 228
    type : uint8, value: ä
    type : int32, value: %!s(int32=20320)
    type : int32, value: 20320
    type : int32, value: 你
    */
    

    可以看到string类型,我们单独拿一个字符出来是unit8类型也就是byte类型,与上面的单引号int32是不同的。Go中字符串是一个不可变的值类型,内部用指针指向UTF-8编码的字节数组。显然中文不可能由一个字节组成,我们将他转换成int32位之后就可以输出了。

    反引号

    反引号用来创建原生的字符串字面量,这些字符串可能由多行组成(不支持任何转义序列),相当于一个可以换行的字符串。一般用于SQL语句,html等大段内容,以及正则表达式的使用。

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	s := `Hello 123 
    			你好`
    	fmt.Printf("len : %d
    ", len(s))
    	fmt.Printf("type : %T, value: %s
    ", s, s)
    	fmt.Printf("type : %T, value: %d
    ", s[0], s[0])
    }
    /*
    输出:
    len : 20
    type : string, value: Hello 123 
    			你好
    type : uint8, value: 72
    */
    

    显然这种uint8格式的话,中文不能直接切片输出。

  • 相关阅读:
    ABP理论学习之异常处理
    ABP理论学习之导航(Navigation)
    ABP理论学习之验证DTO
    C#程序实现窗体的最大化/最小化
    残缺棋盘的覆盖问题
    23:区间内的真素数
    最大质因子序列
    02:二分法求函数的零点
    01:查找最接近的元素
    最大连续和问题【四种不同的算法】
  • 原文地址:https://www.cnblogs.com/ivan-blog/p/12347617.html
Copyright © 2011-2022 走看看