如何获得“E”输出而不是69?
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1])
}
Golang是否具有将char转换为byte的功能,反之亦然?
答案 0 :(得分:106)
解释的字符串文字是使用单个字符的(可能是多字节)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
界
读:
关于Go Programming Language Specification的Conversions部分。
答案 1 :(得分:14)
答案 2 :(得分:6)
Go并没有这样的字符类型。 byte通常用于ASCII字符,rune用于Unicode字符,但它们都只是整数类型的别名(uint8和int32)。因此,如果您想强制将它们打印为字符而不是数字,则需要使用Printf("%c", x)
。 %c
格式规范适用于任何整数类型。
答案 3 :(得分:4)
将字符串解释为字符串的一般解决方案是string("HELLO"[1])
。
Rich的解决方案当然也有效。
答案 4 :(得分:4)
也可以通过切片来完成
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1:2])
}
答案 5 :(得分:1)
您也可以尝试使用字符串进行类型转换。
package main
import "fmt"
func main() {
fmt.Println(string("Hello"[1]))
}
答案 6 :(得分:1)
字符串字符是符文,因此要打印它们,必须将它们变回字符串。
fmt.Print(string("HELLO"[1]))
答案 7 :(得分: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
}
答案 8 :(得分:-1)
尝试按字符索引获取字符
function getData(var1, callback){
url= "http://test.server/bla?param="+var1;
request.get(url, function (error, response, body){
var results = [];
var items = JSON.parse(body).entity.resultArray;
var done = 0, max = items.length;
for(var item of items) {
var o = {};
o['data1'] = item.data1;
o['data2'] = item.data2;
o['data3'] = item.data3;
getSecondStep(o, function(secondStepData){
//console.log("Callback object");
//console.log(o);
o['secondStepData'] = secondStepData;
results.push(o);
done += 1;
if(done === max) callback(results);
});
}
});
}
答案 9 :(得分:-2)
隔离字符串中字符的另一种解决方法
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]))
// =注释行