Как получить вывод "E" вместо 69?
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1])
}
У Golang есть функция для преобразования char в байт и наоборот?
Как получить вывод "E" вместо 69?
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1])
}
У Golang есть функция для преобразования char в байт и наоборот?
Интерпретируемые строковые литералы - это символьные последовательности между двойными кавычками "", использующие (возможно многобайтовую) кодировку 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
界
Читать:
Перейдите в раздел " Спецификация языка программирования" в разделе " Преобразования".
Как насчет this?
fmt.Printf("%c","HELLO"[1])
Как указывает Питер, чтобы разрешить больше, чем просто ASCII:
fmt.Printf("%c", []rune("HELLO")[1])
Go действительно не имеет типа символа как такового. байт часто используется для символов ASCII, а руна используется для символов Unicode, но они оба являются просто псевдонимами для целых типов (uint8 и int32). Поэтому, если вы хотите заставить их печатать как символы вместо цифр, вам нужно использовать Printf("%c", x)
. Спецификация формата %c
работает для любого целочисленного типа.
Может быть сделано через нарезку тоже
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1:2])
}
Общее решение для интерпретации char как строки: string("HELLO"[1])
.
Богатое решение также работает, конечно.
Вы также можете попробовать ввести его со строкой.
package main
import "fmt"
func main() {
fmt.Println(string("Hello"[1]))
}
Попробуйте это, чтобы получить характеристики по их индексу
package main
import (
"fmt"
"strings"
)
func main() {
str := strings.Split("HELLO","")
fmt.Print(str[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]))
//= прокомментированная строка