文字列が数値かどうかの判定方法は?

strconvパッケージによって提供されている関数は、文字列が数値であるかどうかを判断するためにGo言語で使用できます。

手順は以下のとおりです。

  1. strconvをインポートする
  2. _, err = strconv.ParseInt(str, 10, 0)
  3. 数値文字列の場合、変換に成功した場合はerrにnilが入ります。数値文字列ではない場合、変換に失敗した場合はerrにnil以外が入ります。
  4. errの値を判定し、errがnilであればその文字列は数値である。errがnilでない場合は、その文字列は数値ではない。

以下にサンプルコードを示します。

import (
    "fmt"
    "strconv"
)

func isNumber(str string) bool {
    _, err := strconv.Atoi(str)
    if err != nil {
        return false
    }
    return true
}

func main() {
    str1 := "123"
    str2 := "abc"

    fmt.Printf("%s is number? %v\n", str1, isNumber(str1))
    fmt.Printf("%s is number? %v\n", str2, isNumber(str2))
}

彼女が来てくれてうれしいです。

123 is number? true
abc is number? false

そのうち、str1は正常な整数なので、結果はtrue。str2は正常な整数ではないので、結果はfalse。

bannerAds