我們如何讀取使用者的鍵盤(控制台)輸入呢?從鍵盤和標準輸入 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...