Number Parsing

Number Parsing #

// 文字列から数値へのパースは、多くのプログラムに現れるパターンである。
// ここでは、Go でのやり方を紹介する。

package main

// `strconv` パッケージを使って数をパースできる。
import (
	"fmt"
	"strconv"
)

func main() {

	// `ParseFloat` の `64` は何ビットの精度でパースするかを指定する。
	f, _ := strconv.ParseFloat("1.234", 64)
	fmt.Println(f)

	// `ParseInt` の `0` は基数を文字列から推測させることを表す。
	// `64` は、結果が64ビットに収まることを要求する。
	i, _ := strconv.ParseInt("123", 0, 64)
	fmt.Println(i)

	// `ParseInt` は8進記数法で書かれた文字列をパースできる。
	d, _ := strconv.ParseInt("0x1c8", 0, 64)
	fmt.Println(d)

	// `ParseUint` もある。
	u, _ := strconv.ParseUint("789", 0, 64)
	fmt.Println(u)

	// `Atoi` は基数が10の `int` 型の値をパースするときに便利である。
	k, _ := strconv.Atoi("135")
	fmt.Println(k)

	// パースする関数は、入力の形式が正しくないとエラーを返す。
	_, e := strconv.Atoi("wat")
	fmt.Println(e)
}
$ go run number-parsing.go 
1.234
123
456
789
135
strconv.ParseInt: parsing "wat": invalid syntax

# パース対象としてこちらも頻出である URL をパースするやり方を紹介する。