概要:fmt.Scanlnで文字列をキャプチャしていましたが、私のニーズの1つは文字列にスペースが必要で、その文字列内の接尾辞があるかどうかをチェックして置き換えなければならないので、strings.HasSuffixを使用しました。 fmt.Scanlnでキャプチャした文字列では問題はありませんでしたが、reader.ReadStringを使用するようになったので、文字列内の指定された接尾辞を見つけることはできません。strings.HasSuffixをreader.ReadStringでキャプチャした文字列で確認できません
何が起こっているのかについてのヒントはありますか?
問題を特定し、オンラインではなくデスクトップにインストールされたGoで使用するテストです。
package main
import (
"bufio"
"fmt"
"strings"
"os"
"reflect"
)
const TOKEN string = ":="
func validate(expr string) {
fmt.Println("var type: ", reflect.TypeOf(expr))
if strings.Contains(expr, TOKEN) {
fmt.Println(expr, "contains works")
} else {
fmt.Println("error with contains")
}
if strings.HasSuffix(expr, TOKEN) {
fmt.Println(expr, "suffix works")
} else {
fmt.Println("error with suffix")
}
}
func main() {
var expr2 string
reader := bufio.NewReader(os.Stdin)
fmt.Print("type something finished with ':='")
expr1, _ := reader.ReadString('\n')
fmt.Scanln(&expr2)
fmt.Println("validation with reader: ")
validate(expr1)
fmt.Println()
fmt.Println("validation with Scanln: ")
validate(expr2)
}
[「ReadStringは、デリミタなどに、最大データを含む文字列を返す、入力におけるDELIMの最初の発生まで読み出し」](https://godoc.org/bufio#Reader.ReadString ) –