有一個訣竅:當使用帶分隔符的ReadString和ReadBytes函數,返回的字符串(和字節)包含分隔符。這就是條件不成立的原因,你的實際字符串是「hi \ n」而不是「hi」。
爲了從標準輸入讀取,您可以使用ReadLine功能,或手動修剪包裝strings
和bytes
的包裝。
此外,您可以使用掃描儀,它默認讀取行。下面是一些例子,所有做同樣的工作:
package main
import (
"bufio"
"bytes"
"fmt"
"os"
"strings"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("-> ")
text, _, _ := reader.ReadLine()
if string(text) == "hi" {
fmt.Println("hii")
}
fmt.Print("-> ")
stext, _ := reader.ReadString('\n') // stext ends with '\n', it reads the delimiter
stext = strings.TrimRight(stext, "\n")
if stext == "hi" {
fmt.Println("hii")
}
fmt.Print("-> ")
text, _ = reader.ReadBytes('\n')
text = bytes.TrimRight(text, "\n")
if string(text) == "hi" {
fmt.Println("hii")
}
fmt.Print("-> ")
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
stext = scanner.Text()
if stext == "hi" {
fmt.Println("hii")
}
fmt.Print("−> ")
scanner.Scan()
text = scanner.Bytes()
if string(text) == "hi" {
fmt.Println("hii")
}
}
什麼從['ReadString'(https://golang.org/pkg/bufio/#Reader.ReadString)文檔是你的問題 – mittmemo
:' ReadString讀取直到輸入中第一次出現delim,返回一個包含數據的字符串直至幷包含分隔符。 – JimB