Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

  1. トップページ
  2. Go辞典
  3. strconv.Atoi() / Itoa() / ParseFloat()

strconv.Atoi() / Itoa() / ParseFloat()

Goの『strconv』パッケージは文字列と数値・真偽値の相互変換を行う関数を提供します。HTTPのクエリパラメータや設定ファイルの値を数値に変換する場面でよく使います。

構文
import "strconv"

// 文字列 → int(10進数)
n, err := strconv.Atoi("42")

// int → 文字列
s := strconv.Itoa(42)

// 文字列 → float64
f, err := strconv.ParseFloat("3.14", 64) // 64はビットサイズ

// 文字列 → bool
b, err := strconv.ParseBool("true") // "1","t","T","TRUE","true","True"を受け付けます。

// 文字列 → int64(基数・ビットサイズ指定可能)
n64, err := strconv.ParseInt("FF", 16, 64) // 16進数を64ビット整数に変換

// float64 → 文字列
s := strconv.FormatFloat(3.14, 'f', 2, 64) // 書式'f'、精度2桁、64ビット

// int64 → 文字列(基数指定可能)
s := strconv.FormatInt(255, 16) // 16進数文字列に変換

// bool → 文字列
s := strconv.FormatBool(true) // "true"
関数一覧
関数概要
strconv.Atoi(s)文字列sを10進数intに変換します。
strconv.Itoa(i)整数iを10進数の文字列に変換します。
strconv.ParseFloat(s, bitSize)文字列を浮動小数点数に変換します。bitSizeは32または64です。
strconv.ParseInt(s, base, bitSize)文字列を指定基数・ビットサイズのint64に変換します。
strconv.ParseUint(s, base, bitSize)文字列を符号なし整数uint64に変換します。
strconv.ParseBool(s)文字列を真偽値に変換します。"1","true","t"などを受け付けます。
strconv.FormatFloat(f, fmt, prec, bitSize)浮動小数点数を文字列に変換します。
strconv.FormatInt(i, base)int64を指定基数の文字列に変換します。
strconv.FormatBool(b)真偽値を"true"または"false"に変換します。
strconv.Quote(s)文字列をGoのダブルクォート文字列リテラル形式にエスケープします。
サンプルコード
package main

import (
    "fmt"
    "strconv"
)

func main() {
    // Atoi:文字列 → int
    n, err := strconv.Atoi("123")
    if err != nil {
        fmt.Println("エラー:", err)
    } else {
        fmt.Printf("Atoi結果: %d (型: %T)\n", n, n)
    }

    // 変換失敗時のエラーハンドリング
    _, err = strconv.Atoi("abc")
    if err != nil {
        fmt.Println("Atoi失敗:", err) // strconv.Atoi: ...
    }

    // Itoa:int → 文字列
    s := strconv.Itoa(456)
    fmt.Printf("Itoa結果: %q (型: %T)\n", s, s)

    fmt.Println()

    // ParseFloat:文字列 → float64
    f, _ := strconv.ParseFloat("3.14159", 64)
    fmt.Printf("ParseFloat: %.5f\n", f)

    // FormatFloat:float64 → 文字列
    fs := strconv.FormatFloat(3.14159, 'f', 3, 64) // 小数点以下3桁
    fmt.Println("FormatFloat('f',3):", fs)
    fs2 := strconv.FormatFloat(12345.678, 'e', 2, 64) // 指数表記
    fmt.Println("FormatFloat('e',2):", fs2)

    fmt.Println()

    // ParseInt:基数指定変換
    hex, _ := strconv.ParseInt("FF", 16, 64)
    fmt.Printf("16進数FF → %d\n", hex)
    bin, _ := strconv.ParseInt("1010", 2, 64)
    fmt.Printf("2進数1010 → %d\n", bin)

    // FormatInt:整数 → 指定基数の文字列
    fmt.Println("255を2進数:", strconv.FormatInt(255, 2))
    fmt.Println("255を16進数:", strconv.FormatInt(255, 16))

    fmt.Println()

    // ParseBool / FormatBool
    b, _ := strconv.ParseBool("true")
    fmt.Println("ParseBool:", b)
    fmt.Println("FormatBool:", strconv.FormatBool(false))
}
概要

『strconv.Atoi()』と『strconv.Itoa()』はそれぞれ"ASCII to Integer"と"Integer to ASCII"の略で、最も頻繁に使うstrconv関数です。変換失敗時のエラーは必ず確認するようにしてください。単純な型変換(例: int(3.14))とは異なり、strconvは文字列とネイティブ型の境界での変換を担います。

strconv.Atoi()はint型を返しますが、そのサイズはプラットフォームに依存します(64ビット環境では64ビット)。明示的なビット幅が必要な場合はstrconv.ParseInt(s, 10, 64)を使ってint64で受け取ってください。

文字列の操作は『strings.Contains()』、フォーマット出力は『fmt.Println() / Printf()』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。