如何获得“E”输出而不是 69?
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1])
}
Golang 是否具有将 char 转换为 byte 的功能,反之亦然?
解释的字符串文字是双引号 "" 之间的字符序列,使用单个字符的(可能是多字节)UTF-8 编码。在 UTF-8 中,ASCII 字符是对应于前 128 个 Unicode 字符的单字节字符。字符串的行为类似于字节片。符文是标识 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
界
读:
也可以通过切片完成
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1:2])
}
注意:此解决方案仅适用于 ASCII 字符。
您也可以尝试使用字符串进行类型转换。
package main
import "fmt"
func main() {
fmt.Println(string("Hello"[1]))
}
Go 并没有真正的字符类型。byte 常用于 ASCII 字符,rune 用于 Unicode 字符,但它们都只是整数类型(uint8 和 int32)的别名。因此,如果您想强制将它们打印为字符而不是数字,则需要使用Printf("%c", x)
. %c
格式规范适用于任何整数类型。
将 char 解释为字符串的一般解决方案是string("HELLO"[1])
.
当然,Rich 的解决方案也有效。
试试这个通过他们的索引来获取字符
package main
import (
"fmt"
"strings"
)
func main() {
str := strings.Split("HELLO","")
fmt.Print(str[1])
}
字符串字符是符文,因此要打印它们,您必须将它们转回字符串。
fmt.Print(string("HELLO"[1]))
隔离字符串中字符的另一种解决方案
package main
import "fmt"
func main() {
var word string = "ZbjTS"
// P R I N T
fmt.Println(word)
yo := string([]rune(word)[0])
fmt.Println(yo)
//I N D E X
x :=0
for x < len(word){
yo := string([]rune(word)[x])
fmt.Println(yo)
x+=1
}
}
对于字符串数组也:
fmt.Println(string([]rune(sArray[0])[0]))
// = 注释行
解决方案将是:
package main
import "fmt"
func main() {
str := "HELLO"
string(str[0])//H
string(str[1])//E
string(str[2])//L
string(str[3])//L
string(str[4])//O
}