1. ホーム
  2. go

[解決済み] GoLangで文字列を比較するにはどうしたらいいですか?

2022-10-20 16:45:39

質問

Goの文字列比較で「真」の結果を出すことができません。私は問題を説明するために次のように書き、出力のスクリーンショットを添付しました。

// string comparison in Go
package main
import "fmt"
import "bufio"
import "os"

func main() {
    var isLetterA bool 

    fmt.Println("Enter the letter a")
    reader := bufio.NewReader(os.Stdin)
    input, _ := reader.ReadString('\n')

    if(input == "a") {
        isLetterA = true
    } else {
        isLetterA = false 
    }

    fmt.Println("You entered",input)
    fmt.Println("Is it the letter a?",isLetterA)

}

どのように解決するのですか?

== は、Goで文字列を比較するための正しい演算子です。しかし、STDIN から読み込んだ文字列を reader.ReadString で読み込んだ文字列には "a" を含まないが "a\n" (となります(よく見ると、例の出力に余分な改行があるのがわかります)。

を使用することができます。 strings.TrimRight という関数を使って、入力から末尾の空白を取り除くことができます。

if strings.TrimRight(input, "\n") == "a" {
    // ...
}