我正在看Go制作的Hangman游戏。
这里是函子代码的一部分,用于确定我所输入的字母是否在Hang子手的单词中。
func revealdashes(word string, guess string, dashes string) string {
newdashes := ""
for i, r := range dashes {
if c := string(r); c != "_" {
newdashes += c
} else {
var letter = string(word[i])
if guess == letter {
newdashes += guess
} else {
newdashes += "_"
}
}
}
return newdashes
}
据我了解,
for i,r :=range dashes{....
在此行中,i表示index,r表示RUNE对吗?我的问题是在下一行,
if c:=string(r); c !="_"{....
c:=string(r)
是什么意思?我不确定此string(r)
是指什么。
[if <A>; <CONDITION> {...}
表示先执行A
,然后检查CONDITION
,以便if c := string(r); c != "_"
将r(从符文类型)转换为字符串类型,并将其值放入c
。然后,如果c等于“ _”,继续。
在golang中,当您要将类型A的变量x转换为类型B时,只需执行B(x)
。
也Here's关于字符串,字节和符文及其区别的不错的帖子。