亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在單獨的函數中編寫掃描儀以使其工作?

如何在單獨的函數中編寫掃描儀以使其工作?

Go
蝴蝶不菲 2023-02-06 18:38:14
在此代碼中,我創建了一個函數,該函數TakeInput()也將接受用戶輸入,包括空格。但每當我運行此代碼并輸入姓名和學校名稱時,它都會為我打印數據。盡管如果我寫的scanner沒有任何功能,它會獲取帶有空格的數據。package mainimport (    "bufio"    "fmt"    "os")func TakeInput(value string) {    scanner := bufio.NewScanner(os.Stdin)    if scanner.Scan() {        value = scanner.Text()    }    if err := scanner.Err(); err != nil {        fmt.Println("Error encountered:", err)    }}func main() {    var name, school string    fmt.Printf("Enter your name: ")    TakeInput(name)    fmt.Printf("Enter your school name: ")    TakeInput(school)    fmt.Println(name, school)}
查看完整描述

1 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

每個參數都是函數內部的本地副本。您必須將指針傳遞給TakeInput()(例如&name和&school)并修改指向的值(例如*value = scanner.Text(),否則您只修改函數返回時丟棄的副本。


例如:


func TakeInput(value *string) {

    scanner := bufio.NewScanner(os.Stdin)

    if scanner.Scan() {

        *value = scanner.Text()

    }


    if err := scanner.Err(); err != nil {

        fmt.Println("Error encountered:", err)

    }

}


func main() {

    var name, school string

    fmt.Printf("Enter your name: ")

    TakeInput(&name)


    fmt.Printf("Enter your school name: ")

    TakeInput(&school)


    fmt.Println(name, school)

}

還要注意bufio.Scanner有一個內部緩沖區。它可能讀取的內容多于返回的內容,當您bufio.Scanner在另一個TakeInput()調用中創建新的內容時,它可能無法讀取以前讀取、緩沖和丟棄的數據。


所以在外部創建掃描儀TakeInput(),例如


func TakeInput(scanner *bufio.Scanner, value *string) {

    if scanner.Scan() {

        *value = scanner.Text()

    }


    if err := scanner.Err(); err != nil {

        fmt.Println("Error encountered:", err)

    }

}


func main() {

    scanner := bufio.NewScanner(os.Stdin)


    var name, school string

    fmt.Printf("Enter your name: ")

    TakeInput(scanner, &name)


    fmt.Printf("Enter your school name: ")

    TakeInput(scanner, &school)


    fmt.Println(name, school)

}


查看完整回答
反對 回復 2023-02-06
  • 1 回答
  • 0 關注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號