いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-191 (strconvパッケージ Tips)(ParseInt の第3引数 bitSize について)

概要

以下自分用のメモです。よく忘れるのでここにメモメモ。。。

strconvパッケージに、 ParseInt という関数がありまして、多分大抵の人が利用したことがあると思います。

この ParseInt 関数さん、引数が3つとなっていて、一つ目が対象となる文字列、2つ目が進数、3つ目がビットサイズとなっていいます。

んで、このビットサイズの指定なんですが、8 とか 32 とか 64とかを指定してもいいのですが、実はここに 0 も指定できます。

0を指定すると int に収まるようにしてくれます。関数のドキュメントにも以下のように書かれています。

The bitSize argument specifies the integer type that the result must fit into. Bit sizes 0, 8, 16, 32, and 64 correspond to int, int8, int16, int32, and int64. If bitSize is below 0 or above 64, an error is returned.

pkg.go.dev

大抵の場合 int で取り扱いたいことが多いと思いますので、ビットサイズがよく分からない状態だったらとりあえず 0 を指定しておけば大体大丈夫です。

サンプル

package strconvs

import (
    "strconv"

    "github.com/devlights/gomy/output"
)

// ParseIntTipsBitSize -- strconv.ParseInt() の第3引数 bitSize を指定する際のTipsです。
//
// REFERENCES
//  - https://pkg.go.dev/strconv@latest#ParseInt
func ParseIntTipsBitSize() error {
    //
    // strconv.ParseInt() の 第3引数 bitSize には
    // 通常、値が収まるビットサイズを指定することになるが
    // 0を指定すると、 int に収まるようにしてくれる。
    //
    // 大抵の場合、intで取得したいときが多いので
    // 0を指定しておくと楽。
    //

    var (
        value   = "ff"
        base    = 16
        bitSize = 0
        parsed  int64
        err     error
    )

    parsed, err = strconv.ParseInt(value, base, bitSize)
    if err != nil {
        return err
    }

    output.Stdoutl("[original]", value)
    output.Stdoutl("[parsed  ]", int(parsed))

    return nil
}

実行すると以下のようになります。

gitpod /workspace/try-golang (master) $ make run
go run -race main.go -onetime -example ""

ENTER EXAMPLE NAME: strconvs_parseint_tips_bitsize

[Name] "strconvs_parseint_tips_bitsize"
[original]           ff
[parsed  ]           255


[Elapsed] 82.02µs

参考情報

https://pkg.go.dev/strconv@go1.18#ParseInt

https://go.dev/tour/basics/11


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。