第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

reader.ReadString 不會(huì)刪除第一次出現(xiàn)的 delim

reader.ReadString 不會(huì)刪除第一次出現(xiàn)的 delim

Go
紅糖糍粑 2022-01-10 14:27:45
我寫了一個(gè)簡單的 go 程序,但它不能正常工作:package mainimport (    "bufio"    "fmt"    "os")func main() {    reader := bufio.NewReader(os.Stdin)    fmt.Print("Who are you? \n Enter your name: ")    text, _ := reader.ReadString('\n')    if aliceOrBob(text) {        fmt.Printf("Hello, ", text)    } else {        fmt.Printf("You're not allowed in here! Get OUT!!")    } }func aliceOrBob(text string) bool {    if text == "Alice" {        return true    } else if text == "Bob" {        return true    } else {        return false    }}它應(yīng)該要求用戶說出它的名字,如果他是 Alice 或 Bob,請向他打招呼,否則告訴他離開。問題是,即使輸入的名字是 Alice 或 Bob,它也會(huì)告訴用戶離開。愛麗絲:/usr/lib/golang/bin/go run /home/jcgruenhage/go/workspace/src/github.com/jcgruenhage/helloworld/greet/greet.goWho are you? Enter your name: AliceYou're not allowed in here! Get OUT!!Process finished with exit code 0鮑勃:/usr/lib/golang/bin/go run /home/jcgruenhage/go/workspace/src/github.com/jcgruenhage/helloworld/greet/greet.goWho are you? Enter your name: BobYou're not allowed in here! Get OUT!!Process finished with exit code 0
查看完整描述

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.


查看完整回答
反對 回復(fù) 2022-01-10
?
繁星coding

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

然后你最終比較AliceAlice\n。因此,正如@ch33hau 所指出的,解決方案是要么Alice\n在你的aliceOrBob函數(shù)中使用,要么以不同的方式讀取輸入。


查看完整回答
反對 回復(fù) 2022-01-10
?
慕哥9229398

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊

我對 Go 一無所知,但您可能想要去掉前導(dǎo)或尾隨空格和其他空格(制表符、換行符等)字符的字符串。


查看完整回答
反對 回復(fù) 2022-01-10
  • 3 回答
  • 0 關(guān)注
  • 218 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號