[解決済み] Goのintとint64の違いは何ですか?
質問
整数(ファイルから読み込んだもの)を含む文字列があります。
を変換しようとしています。
string
を
int
を使って
strconv.ParseInt()
.
ParseInt
はビットサイズを提供することを要求しています(ビットサイズ0、8、16、32、64はint、int8、int16、int32、int64に対応します)。
ファイルから読み込まれた整数は小さいです (つまり、通常の int に収まるはずです)。しかし、ビットサイズ 0 を渡すと、結果はタイプ
int64
(おそらく 64 ビット OS 上で実行しているため) の結果が得られます。
なぜこのようなことが起こるのでしょうか?どうすれば通常の int を取得できるのでしょうか (異なる int 型をいつ、なぜ使用すべきかについての簡単な入門書を誰かが持っていれば、それは素晴らしいことです!)。
編集: int64を通常のintに変換するには、次のようにします。
int([i64_var])
. しかし、私はまだなぜ
ParseInt()
はなぜビットサイズ0を要求しているのにint64を与えているのか、まだ理解していません。
どのように解決するのですか?
func ParseInt(s string, base int, bitSize int) (i int64, err error)
ParseIntは常に
int64
bitSize
は値の範囲を定義します。sに対応する値が与えられたサイズの符号付き整数で表現できない場合、err.Err = ErrRangeとなります。
http://golang.org/pkg/strconv/#ParseInt
type int int
intは少なくとも32ビットの大きさの符号付き整数型です。しかし、これは別個の型であり、例えばint32のようなエイリアスではありません。
http://golang.org/pkg/builtin/#int
そこで
int
は将来的には 32 ビットより大きくなる可能性がありますし、システムによっては
int
のように32ビットより大きくなる可能性があります。
私は、いくつかのシステムで
int64
よりも速いかもしれません。
int32
よりも速いかもしれません。なぜなら、このシステムは64ビット整数でしか動作しないからです。
以下は
bitSize
が8
http://play.golang.org/p/_osjMqL6Nj
package main
import (
"fmt"
"strconv"
)
func main() {
i, err := strconv.ParseInt("123456", 10, 8)
fmt.Println(i, err)
}
関連
-
[解決済み] go getとgo installの違いは何ですか?
-
[解決済み] GOPATHとGOROOTの値はどうすればよいですか?
-
[解決済み] Goの:=と=の演算子の違い
-
[解決済み】Goのタグはどのような用途に使われますか?
-
[解決済み】C言語の三項演算子に相当するGoの慣用句は何ですか?
-
[解決済み] Goにおけるfmt.Println()とprintln()の相違点
-
[解決済み] intをint64に変換するには?
-
[解決済み] スライスを格納する interface{} 上の範囲
-
[解決済み] sync.WaitGroupの例は正しいですか?
-
[解決済み] 複数のファイルからなるGoプログラムをコンパイルするには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] response.Bodyを閉じないとどうなりますか?
-
[解決済み] Goを使って大きなファイルを効率よくダウンロードするにはどうしたらいいですか?
-
[解決済み] スライスを宣言するのか、スライスを作るのか?
-
[解決済み] Goでスライスを逆に反復処理する方法はありますか?
-
[解決済み] スライスを格納する interface{} 上の範囲
-
[解決済み] GoLangで文字列を比較するにはどうしたらいいですか?
-
[解決済み] Goのコンパイル済み実行ファイルのサイズが巨大化する理由
-
[解決済み] 複数のファイルからなるGoプログラムをコンパイルするには?
-
[解決済み] ゴルーチンからの戻り値をキャッチする
-
[解決済み] golangにおけるバックティック(``)とダブルクォート("")の違いは何ですか?