如何索引Golangstring中的字符?

如何获得“E”输出而不是69?

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

Golang是否有将字符转换为字节的function?

解释的string文字是使用单个字符(可能是多字节)UTF-8编码的双引号“”之间的字符序列。 在UTF-8中,ASCII字符是对应于前128个Unicode字符的单字节。 string的行为像字节片。 符文是标识Unicode代码点的整数值。 因此,

 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 } 

输出:

 e e界 

请参阅转到“编程语言规范”部分。

这个怎么样?

 fmt.Printf("%c","HELLO"[1]) 

正如Peter指出的那样,为了不仅仅允许ASCII:

 fmt.Printf("%c", []rune("HELLO")[1]) 

Go并没有像这样的字符types。 字节通常用于ASCII字符,符号用于Unicode字符,但它们都只是整数types(uint8和int32)的别名。 所以如果你想强制它们被打印成字符而不是数字,你需要使用Printf("%c", x)%c格式规范适用于任何整数types。

将char解释为string的一般解决scheme是string("HELLO"[1])

Rich的解决scheme当然也适用。

另一种隔离string中的字符的解决scheme

 package main import "fmt" func main() { var word string = "ZbjTS" // PRINT fmt.Println(word) yo := string([]rune(word)[0]) fmt.Println(yo) //INDEX x :=0 for x < len(word){ yo := string([]rune(word)[x]) fmt.Println(yo) x+=1 } } 

对于string数组也是:

 fmt.Println(string([]rune(sArray[0])[0])) 

// =注释行