How to index characters in a Golang string?

前端 未结 9 1805
小鲜肉
小鲜肉 2020-12-04 09:15

How to get an \"E\" output rather than 69?

package main

import \"fmt\"

func main() {
    fmt.Print(\"HELLO\"[1])
}

Does Golang have funct

9条回答
  •  有刺的猬
    2020-12-04 10:21

    Interpreted string literals are character sequences between double quotes "" using the (possibly multi-byte) UTF-8 encoding of individual characters. In UTF-8, ASCII characters are single-byte corresponding to the first 128 Unicode characters. Strings behave like slices of bytes. A rune is an integer value identifying a Unicode code point. Therefore,

    package main
    
    import "fmt"
    
    func main() {
        fmt.Println(string("Hello"[1]))              // ASCII only
        fmt.Println(string([]rune("Hello, 世界")[1])) // UTF-8
        fmt.Println(string([]rune("Hello, 世界")[8])) // UTF-8
    }
    

    Output:

    e
    e
    界
    

    Read:

    Go Programming Language Specification section on Conversions.

    The Go Blog: Strings, bytes, runes and characters in Go

提交回复
热议问题