美文网首页
go语言中的多语言文本

go语言中的多语言文本

作者: CurryCoder | 来源:发表于2020-10-18 11:17 被阅读0次
package main

import (
    "fmt"
    "unicode/utf8"
)

func main(){
    // 声明字符串,以下三种方式为等价的
    peace := "peace"
    // var peace = "peace"
    // ver peace string = "peace"
    fmt.Println(peace)
    var blank string  // 字符串的零值
    fmt.Println(blank) // 空字符串

    // 字符串字面值与原始字符串字面值
        // 1.字符串字面值可以包括转义字符,如\n
        // 2.但是,如果你确实想得到\n而不是换行的话,可以使用`来代替",这叫做原始字符串字面值。
    fmt.Println("peace be upon you\nupon you be peace")
    fmt.Println(`strings can span multiple lines with the \n escape sequence`)

    // 字符、code points、runes、bytes
        // 1. Unicode联盟为超过100万个字符分配了相应的数值,这个数叫做code point。例如:65代表A,12815代表"笑脸"这个字符。
        // 2. 为了表示这样的unicode code point,go语言提供了rune这个类型,它是int32的一个类型别名。
        // 3. byte是uint8类型的别名,目的是用于二进制数据。

    // 类型别名:同一个类型的另一个名字。因此,rune和int32是可以互换使用。

    // 也可以自定义类型别名
    type byte = uint8
    type rune = int32

    // 打印
        // 1.如果想打印字符而不是数值,使用%c格式化动词
    var pi rune = 960
    var alpha rune = 940
    var dana rune = 969
    var bang byte = 33
    // 将会打印出code point的值
    fmt.Printf("%v %v %v %v\n", pi, alpha, dana, bang)

    // 将会打印字符
    fmt.Printf("%c%c%c%c\n", pi, alpha, dana, bang)

    // 任何整数类型都可以使用%c打印,但rune意味着该数值表示一个字符。

    // 字符
        // 1.字符字面值使用''括起来
        // 2.如果没有指定字符类型的话,go会自动推断它的类型为rune
    grade := 'A'  // var grade rune
    fmt.Println(grade)
    var grade1 rune = 'A'
    fmt.Println(grade1)

    // 上面的grade仍然包含一个数值,上例中就是65,它是A的code point

    // 字符字面值也可以用byte类型
    var star byte = '*'
    fmt.Println(star)


    // string
        // 1.可以给某个变量赋予不同的string值,但string本身是不可变的
    message := "hello"
    c := message[1]
    fmt.Printf("%c\n", c)
    // message[1] = 'd'

    // go中的内置函数----len():按字节长度输出

    // go中的字符串是用utf-8编码的,utf-8是unicode code point的几种编码之一。

    // utf-8是一种有效率的可变长度的编码,每个code point可以是8位/16位/32位

    // len()如何支持西班牙语、俄语、汉语等?
        // 使用utf-8包,它提供可以按rune计算字符串长度的方法
        // DecodeRunelnString函数会返回第一个字符,以及字符所占的字节数

        // go语言中的函数可以返回多个值
    
    question := "анве αδγεσρ"
    fmt.Println(len(question), "bytes")

    fmt.Println(utf8.RuneCountInString(question), "runes")

    c1, size := utf8.DecodeRuneInString(question)
    fmt.Printf("First rune: %c %v bytes", c1, size)

    // range:可以遍历各种集合
    for _, cc := range question {
        fmt.Printf("%c\n", cc)
    }
}

相关文章

  • go语言中的多语言文本

  • TODO:Go语言goroutine和channel使用

    TODO:Go语言goroutine和channel使用 goroutine是Go语言中的轻量级线程实现,由Go语...

  • Go语言指针

    Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务。 接下来让我们来一步步学习 Go 语...

  • Go的内存管理

    本文翻译自Memory Management in Go,介绍了Go语言中内存管理的相关概念。 所有的计算机程序语...

  • Golang查询SqlServer数据库

    Go语言中查询SqlServer数据库 一、Go语言中查询MsSQL数据库: // main.go package...

  • 2020-07-20

    go 语言中的环境(GOPATH和GOROOT) 对于go语言的新手,理解go语言中的两个环境变量GOROOT和G...

  • 04-Go语言关键字和标识符-指趣学院

    关键字 Go语言中的关键字和C语言中的关键字的含义样, 是指被Go语言赋予特殊含义的单词 Go语言中关键字的特征和...

  • 04GoLang类型转换

    数值类型之间的转换 在C语言中如何转换 1.1隐式转换 1.2显示转换 Go语言中如何转换 在Go语言中只有显示转...

  • cgo

    cgo cgo是用来在Go语言中调用C语言的工具 Go语言调用C语言 简单C语言函数 在Go语言中需要通过impo...

  • 数据类型转换

    数值类型之间的转换 在C语言中如何转换1.隐式转换 2.显示转换 Go语言中如何转换 在Go语言中只有显示转换, ...

网友评论

      本文标题:go语言中的多语言文本

      本文链接:https://www.haomeiwen.com/subject/nyzqmktx.html