3 回答

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
這是因?yàn)槟膖ext存儲(chǔ)Bob\n
解決此問題的一種方法是使用strings.TrimSpace修剪換行符,例如:
import (
....
"strings"
....
)
...
if aliceOrBob(strings.TrimSpace(text)) {
...
或者,您也可以使用ReadLine代替ReadString,例如:
...
text, _, _ := reader.ReadLine()
if aliceOrBob(string(text)) {
...
需要 的原因string(text)是因?yàn)?ReadLine 會(huì)返回你byte[]而不是string.

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
我認(rèn)為這里混亂的根源是:
text, _ := reader.ReadString('\n')
不刪除\n
,而是將其保留為最后一個(gè)值,并忽略它之后的所有內(nèi)容。
ReadString 讀取直到輸入中第一次出現(xiàn) delim,返回一個(gè)字符串,其中包含直到并包括分隔符的數(shù)據(jù)。
https://golang.org/src/bufio/bufio.go?s=11657:11721#L435
然后你最終比較Alice
和Alice\n
。因此,正如@ch33hau 所指出的,解決方案是要么Alice\n
在你的aliceOrBob
函數(shù)中使用,要么以不同的方式讀取輸入。

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
我對 Go 一無所知,但您可能想要去掉前導(dǎo)或尾隨空格和其他空格(制表符、換行符等)字符的字符串。
- 3 回答
- 0 關(guān)注
- 218 瀏覽
添加回答
舉報(bào)