在Go中遍历字符串时出现字符集问题

时间:2018-07-22 16:29:26

标签: string go character-encoding iteration byte

所以,我正在学习Golang,这让我感到困惑。 subStr函数应该生成一个子字符串,但是确实会正确打印ñ和í等字符。由于

str[i]

返回一个字节,我将其转换为字符串,但是它不再是utf-8?还是Unicode? (看,这是我感到困惑的地方) 我确实读过类似主题的建议,说我应该使用

[]rune 

代替字符串,我并没有真正理解它。 我是GO的新手,这一切都很令人困惑,因此,如果有人想解释一下我应该怎么做才能使subStr函数正常工作,我将不胜感激。

代码:

package main

import(
    "fmt"
)

func subStr(str string, beg int, end int)string {

    var res string
    for i := beg-1; i < end+1; i++ {

    res = string(res + string(str[i]))
    }

    return res
}

func main() {

    fmt.Println("Testing function\n")

    str := "añadir algo con letras extrañas aquí"

    fmt.Println(str)

    substr := subStr(str, 1, 4)

    fmt.Println(substr)

}

输出:

Testing function

añadir algo con letras extrañas aquí
añad

从输出中可以看到,原始字符串可以很好地打印,但是子字符串却不能

0 个答案:

没有答案