我正在尝试检查字节中是否存在给定字符:
//readBuf: []byte
//n: int
for i:=0;i<n;i++{
if readBuf[i]=="?"{
return true
}
}
“?”是字符串类型,所以我得到一个错误,因为readBuf [i]是一个字节。我该怎么转换“?”到一个字节能够将它与readBuf [i]进行比较?
似乎[] byte(“?”)[0]正在工作(将1元素字符串转换为1元素字节数组,提取第一个值),但我确信这不是正确的方法这样做。
答案 0 :(得分:3)
here. '?'
是问号符号的无类型整数值。
使用rune literal:
if bytes.ContainsRune(readBuf[:n], '?') {
return true
}
因为字符?
在UTF-8中被编码为单个字节,所以测试也可以写成:
for _, b := range readBuf[:n] {
if b =='?'{
return true
}
}