go-08-基本数据类型-字符串和布尔值

Posted shark_西瓜甜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go-08-基本数据类型-字符串和布尔值相关的知识,希望对你有一定的参考价值。

一、字符

Go 中,独立的字母、数字和符号被统称为字符。
通过拼接多个字符并使用双引号包裹起来,就得到了字符串字面量,在 Go 中使用 string 表示。

独立的字符需要使用英文的单引号包裹起来,就像下面的代码里一样:

var w = 'a'

代码点

实际上计算机存储字符、符号和表情的时候,存储的是它们对应的一个到多个数字,这些数字称为 代码点。

统一码联盟(Unicode Consortium)定义了每个字符对应的代码点。
例如,大写字母 A 对应的代码点为 65,表情😃 对应的代码点为 128515。
这些可以使用格式化输出中的 %c%v 来验证。

    fmt.Printf("%c %[1]v\\n", 'A') // A 65
    fmt.Printf("%c %[1]v\\n", '😃') // 😃 128515

rune 类型

Go 中使用 rune(符文)类型用于表示单个Unicode 的代码点,该类型是 int32 类型的别名。

    var pi rune = 960
    var alpha rune = 940
    fmt.Printf("%v -> %[1]c \\n%v -> %[2]c\\n", pi, alpha)

以上代码将会输出

960 -> π 
940 -> ά

实际上二进制数据可以使用 byte 类型表示,它是 uint8 类型的别名。
byte 也可以表示 美国信息交换标准代码(ASCII)中的英文字符(总供 128个字符,包含了英文标点符号)。

    var bang byte = 33
    fmt.Printf("%v -> %[1]c\\n", bang) // 33 -> !

实际上 Go 提供了相应的字符字面量句法,可以直接使用单引号包裹单个字符,这样 Go 会自动推导出其类型为 rune

    pi1 := 'π'
    var pi1 = 'π'
    var pi1 rune = 'π'

实际输出时,类型会显示 int32

二、字符串

1 声明 string

默认情况下,Go 会把双引号包裹起来的字面值推断为 string 类型。
如下代码的作用是一样的:

s = "Go"
var s = "Go"
var s string = "Go"

2 零值

字符串的零值是 ""

var blank string

3 原始字符串字面量

若果你执行打印出 \\n 而不是打印新的一行,需要使用反引号 ``

fmt.Println("hello\\nworld")
fmt.Println(`hello\\nworld`)

如上代码谁打印出如下内容:

hello
world
hello\\nworld

这种反引号的方式,可以让原始字符串字面量实现跨越多个文本行。

fmt.Println(`
        hello
        world
`)

这会输出

        hello
        world
    

使用场景,Windows 系统的文件路径就非常适合使用原始字符串字面量。

path := `C:\\go`
fmt.Println(path)

4 获取字符串中的字符

字符串可以使用字符在字符串中的索引来获取到这个字符,但是无法修改字符串。

    msg := "hello"
    c := msg[3]
    fmt.Printf("字符字面值是%c 代码点是%[1]v\\n",c) // 字符字面值是l 代码点是108

实现把小写字母转换为大写的程序

    c := 'g'
    c = c - 'a' + 'A'
    fmt.Printf("%v - %v + %v\\n", 'g', 'a', 'A') // 103 - 97 + 65
    fmt.Printf("%c %[1]v\\n", c) // G 71

二、布尔值 bool

布尔值的取值返回只有 truefalse

    t := true
    f := false
    fmt.Printf("%v %[1]T\\n", t) // true bool
    fmt.Printf("%v %[1]T\\n", f) // false bool

以上是关于go-08-基本数据类型-字符串和布尔值的主要内容,如果未能解决你的问题,请参考以下文章

go-08-基本数据类型-字符串和布尔值

Go+字面量

字面量

java 常量池

C++基础知识之常量(字面量) 变量

Golang basic_leaming基本数据类型