カテゴリ: Go言語 更新日: 2026/02/23

Go言語の型変換(キャスト)の基本!int・floatなど型を安全に変換する方法

Go言語の型変換(キャスト)の基本!int・floatなど型を安全に変換する方法
Go言語の型変換(キャスト)の基本!int・floatなど型を安全に変換する方法

先生と生徒の会話形式で理解しよう

生徒

「Go言語って、数字の型を変えることはできますか?」

先生

「はい、Go言語では型変換(キャスト)を使って、例えば整数(int)を小数(float)に変えたりできます。」

生徒

「どうやって変換するんですか?難しくないですか?」

先生

「とても簡単です!では、基本から一緒に学んでみましょう!」

1. 型変換(キャスト)とは?

1. 型変換(キャスト)とは?
1. 型変換(キャスト)とは?

Go言語の型変換(キャスト)は、ある型の値(たとえば整数型int)を別の型(たとえば浮動小数点型float64)として扱えるようにする操作です。見た目は同じ「数字」でも、コンピューター内部では保存形式や表現できる範囲が異なるため、そのまま混ぜて計算はできません。

Go言語では暗黙的な変換は行われません。つまり、intfloat64を直接足し算しようとするとエラーになります。安全性と分かりやすさを守るため、変換先の型名を明示して「この値をこの型として扱ってね」と指示するのが基本ルールです。

書式はシンプルで、変換先の型名(値)の形で指定します。計算の意図がコードから読み取れるようになり、桁落ちや精度の勘違いを防ぐ助けにもなります。まずは小さな例で、どのように使うのか感覚をつかみましょう。

ミニサンプル:混在する数値を明示して足し算


package main

import "fmt"

func main() {
    var a int = 10
    var b float64 = 3.5

    // aはintなので、float64に明示的に変換してから加算する
    sum := float64(a) + b

    // 逆方向の変換:小数は切り捨てられてintになる
    c := int(b) // 3 になる

    fmt.Println(sum) // 13.5
    fmt.Println(c)   // 3
}

ポイントは次の三つです。①intfloat64は自動では混ざらない、②必要に応じてfloat64(a)のように変換して計算する、③intに変換すると小数部は切り捨てられる――この基本を押さえておけば、以降の具体例でも迷いにくくなります。

2. int から float64 に変換する方法

2. int から float64 に変換する方法
2. int から float64 に変換する方法

整数を小数として計算したいとき(平均値の計算や割合の算出など)は、intfloat64に変換します。見た目が同じ「10」でも、型が違うと計算結果や扱い方が変わるため、必要な場面で明示的に変換しておくと安心です。

基本:そのまま小数として扱う


var i int = 10
var f float64 = float64(i) // int → float64 に明示的に変換
fmt.Println(f)             // 10(小数として扱える)

float64(i)のように、変換先の型名(値)と書くだけです。以後は小数の演算や表示ができ、桁数を保ったままの計算が可能になります。

よくあるつまずき:平均値で整数同士を足して割る

整数同士の割り算は小数点以下が切り捨てられます。平均や割合を正確に出したいときは、割る前にどちらかをfloat64変換しましょう。


sum := 7   // int
n   := 2   // int

avgWrong := sum / n                 // 3 になる(小数が消える)
avg := float64(sum) / float64(n)    // 3.5(意図した小数の平均)

fmt.Println(avgWrong) // 3
fmt.Println(avg)      // 3.5

ポイントは「演算のに変換する」こと。あとから結果だけ変換しても、小数が失われていたら元に戻りません。

小さなコツ:どちらを変換すべき?

  • 割合や平均など小数が必要な計算は、少なくとも片方float64へ。
  • 定数の10.0のような小数リテラルと計算する場合は、整数側をfloat64に寄せると読みやすい。
  • 一時変数を作ると意図が伝わりやすく、後から読む人にも親切。

3. float64 から int に変換する方法

3. float64 から int に変換する方法
3. float64 から int に変換する方法

小数を整数として扱いたい場面(個数へ丸める、ページ数を求める、在庫の端数を切り捨てる など)では、float64intに変換します。基本はとてもシンプルで、int(値)と書くだけです。

基本:小数部は切り捨て(ゼロ方向)


var f float64 = 12.8
var i int = int(f) // 12(小数部は捨てられる)
fmt.Println(i)

このときの挙動はゼロ方向への切り捨てです。つまり、正の数は小さく、負の数は大きく寄ります。


fmt.Println(int(12.8))   // 12
fmt.Println(int(-12.8))  // -12(-13ではなくゼロ側へ詰められる)

「四捨五入・切り上げ・切り下げ」をしたい場合

そのままint()に渡すと小数部は捨てられるだけです。四捨五入や切り上げ・切り下げをしたい場合は、先に目的の丸めを行ってからintへ変換します。


package main

import (
    "fmt"
    "math"
)

func main() {
    price := 12.5

    r := int(math.Round(price)) // 四捨五入 → 13
    c := int(math.Ceil(price))  // 切り上げ → 13
    f := int(math.Floor(price)) // 切り下げ → 12

    fmt.Println(r, c, f)
}

math.Roundは.5を遠い側へ丸めます(12.5→13、-12.5→-13)。切り上げ・切り下げの区別が必要なときはCeil/Floorを使うと、意図が読みやすくなります。

よくあるつまずき:結果を変換しても小数は戻らない

平均値などで先に整数同士の割り算をしてしまうと小数が消えます。必要なら計算前にfloat64へ変換し、小数を保ったまま演算してから最後にintへ変換しましょう。


sum, n := 7, 2
avgWrong := sum / n              // 3(小数が消える)
avg := float64(sum) / float64(n) // 3.5(小数を保つ)
fmt.Println(int(avg))            // 3(最後に必要なら整数化)

指針

  • 小数部を捨てるだけならint(x)
  • 丸め規則が必要ならmath.Round/Ceil/Floorで先に目的の値へ。
  • 負の数はゼロ方向へ寄る点に注意(-12.8 → -12)。

4. string型から数値への変換

4. string型から数値への変換
4. string型から数値への変換

文字列(string)から数値に変換したいときは、少しだけ特別な方法を使います。Go言語では、strconv(ストリング・コンバージョン)というパッケージを使って変換します。


import "strconv"

str := "123"
i, err := strconv.Atoi(str)
if err != nil {
    fmt.Println("変換できませんでした")
} else {
    fmt.Println(i)
}

Atoiというのは「ASCII to Integer(文字を整数に)」の略です。
数字として書かれた文字列を、正しいint型に変換できます。


123

5. 型変換で注意すること

5. 型変換で注意すること
5. 型変換で注意すること

型変換では、安全に変換できるかどうかがとても大切です。

  • 小数から整数に変えると、小数点以下は切り捨てられる
  • 文字列から数値に変えるときは、strconvを使い、エラー処理を忘れない
  • 変換できないデータは、そのままではプログラムが止まってしまうこともある

ですので、型変換を使うときは「このデータ、本当に変換していいのか?」と考えることが大切です。

まとめ

まとめ
まとめ

今回はGo言語でとても大切な概念である型変換(キャスト)について、できるだけ専門用語を少なくしながら丁寧に整理しました。じつは、プログラミングの世界では、ただの数字に見えても「整数なのか小数なのか」「文字なのか数値なのか」という違いで計算結果が変わったり、エラーに変わったりします。そこで、安全に扱うために、型をそろえてから計算するという考え方がとても重要になります。この考え方を理解しておくと、後々データ処理やAPIから受け取った値の計算などで混乱せず、落ち着いてコードを書くことができます。

型変換をするときの考え方

まず、Go言語では暗黙的な型変換をしないという決まりがあります。「勝手に変換してくれたら楽なのに」と思うかもしれませんが、逆に勝手に変わってしまうと、思っていない数字になってしまったり、小数が消えてしまったりといったトラブルが起きます。そのため、float64(値)int(値)のように、人間が意図をはっきり書くようになっています。読み返したときにも「なぜこの値を小数にしたいのか」「なぜ整数に変えたのか」がすぐ理解できるので、あとから見た人にも親切なコードになります。

整数と小数を変換する意味

整数と小数は似ているように見えて、計算の扱い方が少し違います。たとえば、平均値や割合を出すとき、整数同士を割り算すると小数が消えます。これは数学的に正しい答えを得たい場面では困ります。そこで、計算の前にfloat64へ変換することで、小数点のまま計算できます。逆に、商品個数やページ数など小数が不要な場面では、そのままint()で切り捨てるほうが自然です。つまり、用途に合わせて型を選ぶことで、より実用的で理解しやすいプログラムになるということです。

文字列を数値に変換する理由

画面入力や外部ファイルでは、数字が文字列として送られてくることがとても多いです。しかし、文字列のままでは計算できないので、strconvを使って数値に変換します。その際、入力が正しい数字でなければエラーになります。だからこそ、エラー処理が大切で、「もし変換できなかったらどうするか」を考えて書くことで、プログラムが途中で止まらないようにできます。仕事で使われるプログラムは、予期しない入力にも対応できる必要があるため、この考え方はとても重要です。

型変換の総まとめサンプル

ここまで学んだ内容を小さなサンプルで振り返ってみます。整数を小数で割ったり、小数を整数に変換したり、文字列を数値に変換したりといった基本的な処理を一つにまとめた例です。


package main

import (
    "fmt"
    "strconv"
)

func main() {
    a := 7
    b := 2
    avg := float64(a) / float64(b)
    fmt.Println(avg)

    price := 12.8
    fmt.Println(int(price))

    str := "100"
    num, err := strconv.Atoi(str)
    if err != nil {
        fmt.Println("変換できませんでした")
        return
    }
    fmt.Println(num)
}

この短いプログラムだけでも、Go言語の型変換がどれほど大切なのかがよくわかります。特に、整数の割り算で小数が消えたり、文字列がそのままでは計算できなかったりする部分は、初心者がつまずきやすい点です。ゆっくり復習しながら、実際に自分の手で書いて動かしてみると理解が深まります。

先生と生徒の振り返り会話

生徒

「最初は型変換って難しい印象でしたが、意外とシンプルなんですね。」

先生

「そうです。複雑に見えても、目的は『正しく扱える型にそろえる』だけです。数字のまま計算したいのか、整数で切り捨てたいのか、文字列から数値にしたいのかを考えれば迷いません。」

生徒

「これなら、平均の計算で小数が消えちゃう理由もわかります。先にfloat64に変えればよかったんですね。」

先生

「その通りです。意図をはっきり書くことで、読みやすいコードにもなります。次からは、計算する前に『どの型で扱うのが正しいのか』を意識してみましょう。」

生徒

「はい!今度は文字列を数値に変換する処理ももっと練習してみます。」

Go言語を基礎からスッキリ学びたい人や、 文法だけでなく「実用的な使い方」まで押さえたい人には、 定番の入門書がこちらです。

基礎からわかるGo言語をAmazonで見る

※ Amazon広告リンク

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Go言語の型変換とは何ですか?初心者にもわかるように教えてください

Go言語の型変換とは、整数や小数、文字列などのデータを別の型として扱えるように変更することです。たとえば、整数をそのまま小数として計算したいときに型変換を行います。コンピューターは数字の型ごとに保存方法や扱い方が違うため、適切な型に変換することで正しく計算できます。初心者が最初につまずくことが多い部分ですが、考え方はとても単純で、必要な型に書き換えるだけです。

Go言語では自動で型が変わらないと説明されていますが、なぜ自動で型変換されないのですか?

Go言語は安全性を重視するプログラミング言語なので、勝手に型が変わると予想外の計算結果になったり、小数が突然消えたりする危険があります。そこでGo言語では、明示的に型変換を書いて、プログラマーが意図どおりに動くようにしています。型変換が必要なときは、自分ではっきり指定することで、安全で読みやすいコードになります。
関連セミナーのご案内

【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導

「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。

本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。

具体的な開発内容と環境

【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。

【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。

この60分で得られる3つの理解

1. 環境構築の完全な理解

「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。

2. Go言語の基本構造(変数・型)

データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。

3. 読みやすいコードの書き方

ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。

※本講座は、将来的にバックエンドエンジニアクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。

セミナー画像

初めてのGo言語を一緒に学びましょう!

関連記事:
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Go言語
Go言語プログラムの実行方法まとめ!VSCode・ターミナルでの実行手順を解説
New3
Swift
Swift意味とは?プログラミング言語・金融・鳥の違いを徹底解説
New4
Swift
Swift 戻り値の扱い方と複数戻り値の返し方|初心者でも分かる関数の基本
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.5
Java&Spring記事人気No5
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.6
Java&Spring記事人気No6
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.7
Java&Spring記事人気No7
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
No.8
Java&Spring記事人気No8
Go言語
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法