为什么这些图表在转换字符串时不显示?

时间:2014-06-19 00:06:53

标签: string go reverse

我只是想知道为什么当我反转并打印字符串中的单个字符时,此字符串中的这些亚洲字符不会出现。

package main

import "fmt"

func main() {

        a := "The quick brown 狐 jumped over the lazy 犬"
        var lenght int = len(a) - 1

        for ; lenght > -1; lenght-- {

                 fmt.Printf("%c", a[lenght])
        }
        fmt.Println()
}

1 个答案:

答案 0 :(得分:5)

您是按字节访问字符串数组而不是'逻辑字符' 为了更好地理解这个例子,首先将字符串作为符文数组打破,然后向后打印符文。

http://play.golang.org/p/bzbo7k6WZT

package main

import "fmt"

func main() {
    msg := "The quick brown 狐 jumped over the lazy 犬"

    elements := make([]rune, 0)

    for _, rune := range msg {
        elements = append(elements, rune)
    }

    for i := len(elements) - 1; i >= 0; i-- {
        fmt.Println(string(elements[i]))
    }
}

更短的版本:http://play.golang.org/p/PYsduB4Rgq

package main

import "fmt"

func main() {
    msg := "The quick brown 狐 jumped over the lazy 犬"

    elements := []rune(msg)

    for i := len(elements) - 1; i >= 0; i-- {
        fmt.Println(string(elements[i]))
    }
}