在下面的代码中,当我检查s[i]
时,它给我的是二进制数而不是字符。代码仍然可以工作,但我如何才能让s[i]
返回一个字符,同时仍然使用s类型字符串作为参数呢?
func main() {
var ip string
fmt.Println("Enter string:")
fmt.Scanf("%s\n", &ip)
ip = strings.ToLower(ip)
fmt.Println(isP(ip))
}
//Function to test if the string entered is a Palindrome
func isP(s string) string {
mid := len(s) / 2
last := len(s) - 1
for i := 0; i < mid; i++ {
if s[i] != s[last-i] {
return "NO. It's not a Palimdrome."
}
}
return "YES! You've entered a Palindrome"
}
4条答案
按热度按时间cnjp1d6j1#
如果要将
string
转换为[]string
,也可以使用strings.Split(s,"")
a14dhokn2#
例如,
输出量:
Go语言字符
string
是UTF-8编码的字符序列。UTF-8是可变长度字符编码。s[i]
是字节而不是字符。rune
(码位)是字符。使用string(r)
可将rune
转换为可打印的string
。例如,输出量:
参考文献:
Unicode - Wikipedia
Strings, bytes, runes and characters in Go
o0lyfsai3#
正如上面的注解中所提到的,可以使用
string(s[i])
将其转换为字符,或者可以使用fmt.Printf("%c", s[i])
打印由相应的Unicode码位表示的字符。0md85ypi4#
可以使用string()返回字符。
示例:
fmt.Println(string(s[i]))