下面是从控制台读取输入的代码
var message string
fmt.Scanln(&message)但是我也想尝试使用符文,它是字节的unicode。
var input []rune
fmt.Scanln(input)根据我的C/C++知识,数组的引用可以通过它的名称传递,我认为它会在符文的情况下起作用
但令人惊讶的是,在没有接收控制台输入的情况下,程序会通过Scanln。
那是怎么回事?还是做不到?还是需要类型转换才能字符串?
发布于 2016-10-16 20:26:15
你所拥有的是一个切片而不是一个数组,它们在去中是不同的
当您从字符串中读取每个字符时,您将得到一个符文,例如:
for _, rune := range input { ... }
// or
input[0] // it returns a rune现在,如果您想使用索引或更多的unicode操作,您应该记住每个符文都有一个长度,而且长度也会影响字符串的长度,请参阅下面的示例以更好地理解字符串中的3个字符,但长度为5:
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
input := "a界c"
fmt.Println(len(input))
for index, rune := range input {
fmt.Println(index, utf8.RuneLen(rune), string(rune))
}
fmt.Println(input[1:4]) // we know that the unicode character '界'
// starts in index 1 and ends in index 3
}https://stackoverflow.com/questions/40074698
复制相似问题