讀取使用者的輸入

2021-08-18 08:45:38 字數 2077 閱讀 6408

我們如何讀取使用者的鍵盤(控制台)輸入呢?從鍵盤和標準輸入 os.stdin 讀取輸入,最簡單的辦法是使用 fmt 包提供的 scan 和 sscan 開頭的函式。請看以下程式:

// 從控制台讀取輸入:

package main

import "fmt"

var (

firstname, lastname, s string

i int

f float32

input = "56.12 / 5212 / go"

format = "%f / %d / %s"

)func main()

scanln 掃瞄來自標準輸入的文字,將空格分隔的值依次存放到後續的引數內,直到碰到換行。scanf 與其類似,除了 scanf 的第乙個引數用作格式字串,用來決定如何讀取。sscan 和以 sscan 開頭的函式則是從字串讀取,除此之外,與 scanf 相同。如果這些函式讀取到的結果與您預想的不同,您可以檢查成功讀入資料的個數和返回的錯誤。

您也可以使用 bufio 包提供的緩衝讀取(buffered reader)來讀取資料,正如以下例子所示:

package main

import (

"fmt"

"bufio"

"os"

)var inputreader *bufio.reader

var input string

var err error

func main()

}

inputreader 是乙個指向 bufio.reader 的指標。inputreader := bufio.newreader(os.stdin) 這行**,將會建立乙個讀取器,並將其與標準輸入繫結。

bufio.newreader() 建構函式的簽名為:func newreader(rd io.reader) *reader

該函式的實參可以是滿足 io.reader 介面的任意物件(任意包含有適當的 read() 方法的物件,請參考章節11.8),函式返回乙個新的帶緩衝的 io.reader 物件,它將從指定讀取器(例如 os.stdin)讀取內容。

返回的讀取器物件提供乙個方法 readstring(delim byte),該方法從輸入中讀取內容,直到碰到 delim 指定的字元,然後將讀取到的內容連同 delim 字元一起放到緩衝區。

readstring 返回讀取到的字串,如果碰到錯誤則返回 nil。如果它一直讀到檔案結束,則返回讀取到的字串和 io.eof。如果讀取過程中沒有碰到 delim 字元,將返回錯誤 err != nil。

在上面的例子中,我們會讀取鍵盤輸入,直到回車鍵(\n)被按下。

螢幕是標準輸出 os.stdout;os.stderr 用於顯示錯誤資訊,大多數情況下等同於 os.stdout。

一般情況下,我們會省略變數宣告,而使用 :=,例如:

inputreader := bufio.newreader(os.stdin)

input, err := inputreader.readstring('\n')

我們將從現在開始使用這種寫法。

第二個例子從鍵盤讀取輸入,使用了 switch 語句:

package main

import (

"fmt"

"os"

"bufio"

)func main()

fmt.printf("your name is %s", input)

// for unix: test with delimiter "\n", for windows: test with "\r\n"

switch input

// version 2:

switch input

// version 3:

switch input

}

注意:unix和windows的行結束符是不同的!

Shell讀取使用者輸入

14.2 讀取使用者輸入上一章我們談到如何定義或取消變數,變數可被設定為當前shell的區域性變數,或是環境變數。如果您的shell指令碼不需要呼叫其他指令碼,其中的變數通常設定為指令碼內的區域性變數 參見第13.10節 變數 要獲取變數的值,在美元符後跟變數名即可。shell會對雙引號內的美元符後...

Shell讀取使用者輸入

14.2 讀取使用者輸入上一章我們談到如何定義或取消變數,變數可被設定為當前shell的區域性變數,或是環境變數。如果您的shell指令碼不需要呼叫其他指令碼,其中的變數通常設定為指令碼內的區域性變數 參見第13.10節 變數 要獲取變數的值,在美元符後跟變數名即可。shell會對雙引號內的美元符後...

BASH 如何讀取使用者輸入

bash 指令碼如何從使用者處讀取輸入呢?1.使用read命令 2.或者 read p answer me this answer 3.或者 read pre mid post 最簡單的方式就是直接使用 read 命令,這時,會將從使用者處讀取的輸入儲存到 shell 變數reply中。如果要讓 b...