Go言語の出力と入力の基本!fmt.Printlnとfmt.Scanの使い方をやさしく解説
生徒
「Go言語で文字や数字を表示するにはどうすればいいんですか?」
先生
「Go言語では、fmt.Printlnという命令を使って、画面に文字や数字を出力できますよ。」
生徒
「なるほど!じゃあ逆に、キーボードから何か入力したいときはどうすればいいですか?」
先生
「そのときはfmt.Scanを使えば、キーボードからの入力を受け取ることができます。順番に見ていきましょう!」
1. Go言語の出力とは?fmt.Printlnの基本
まずは、Go言語で画面にメッセージを表示する「出力(しゅつりょく)」について紹介します。出力とは、パソコンが私たちに情報を伝える仕組みです。プログラムが正常に動いているかを確認したり、計算結果をユーザーへ見せたりするときに使われます。
Go言語では、fmt.Println(エフエムティー・プリントライン)という命令で画面に文字や数字を表示できます。この命令は、表示したあと自動的に改行されるので、次の内容が見やすく並びます。初心者の方が最初に覚える命令として、とてもよく使われます。
実際の動きをイメージしやすいように、簡単なサンプルを見てみましょう。
package main
import "fmt"
func main() {
fmt.Println("はじめてのGo言語!")
fmt.Println("数字も表示できます:", 10)
}
このプログラムを実行すると、画面には次のように表示されます。
はじめてのGo言語!
数字も表示できます: 10
fmt.Printlnは、文字列だけでなく数値や変数もそのまま表示できます。文字は"(ダブルクオーテーション)で囲み、数字は囲まずに記述します。プログラムの動作確認やメッセージ表示に欠かせない、とても基本的で便利な命令です。
2. fmt.Printとの違いとは?改行の有無に注目!
fmt.Printlnに似た命令に、fmt.Printという出力用の命令があります。名前は似ていますが、動きが少し違います。fmt.Printlnは最後に自動で改行されますが、fmt.Printは改行されません。そのため、次の文字が同じ行に続けて表示されます。
たとえば、2つの言葉を続けて表示したい場面を考えてみましょう。
package main
import "fmt"
func main() {
fmt.Print("こんにちは、")
fmt.Print("Go言語!")
}
このプログラムを実行すると、画面には次のように表示されます。
こんにちは、Go言語!
fmt.Printは改行されないので、文字がそのまま横に続きます。もし行をしっかり区切って見やすくしたいときは、fmt.Printlnのほうが便利です。
逆に、文字列をつなげてひとまとまりの文章として出力したいときは、fmt.Printが役に立ちます。たとえば、数字や変数をつなげたいときにも、改行しないほうが自然な表現になることがあります。
この違いを覚えておくと、見やすく整理された出力が書けるようになります。状況に応じて、fmt.Printとfmt.Printlnを使い分けてみましょう。
3. Go言語の入力とは?fmt.Scanの基本
次に紹介するのは「入力(にゅうりょく)」です。入力は、パソコンが人間から情報を受け取ることを指します。Go言語では、fmt.Scanを使うとキーボードからの文字や数字を安全に受け取れます。プログラムが質問を表示し、ユーザーが値を打ち込んでEnterキーで確定すると、その値が変数に入り、次の処理へ進む流れです。
まずは、最もシンプルな例として、名前を1つ入力して画面に挨拶を表示してみましょう。未経験の方でも動作がイメージしやすい、確認しやすいサンプルです。
package main
import "fmt"
func main() {
var name string // 文字列を入れる入れ物(変数)を用意
fmt.Print("あなたの名前を入力してください:")
fmt.Scan(&name) // 入力を受け取り、nameに入れる(&は「ここに入れて」の印)
fmt.Println("こんにちは、" + name + "さん!")
}
実行すると次のようになります(一例)。
あなたの名前を入力してください:たろう
こんにちは、たろうさん!
var name stringは「nameという文字用の入れ物を準備する」という意味です。fmt.Scan(&name)の&(アンパサンド)は「この変数に値を書き込んでね」という合図です。入力はEnterキーで確定され、確定した値がそのまま変数に入ります。
もう少しだけ便利な使い方として、fmt.Scanは複数の入力も一度に受け取れます。たとえば名字と名前をスペースで区切って入力するイメージです(半角スペースで区切ります)。
package main
import "fmt"
func main() {
var first, last string
fmt.Print("名字と名前をスペースで入力してください:")
fmt.Scan(&last, &first)
fmt.Println("ようこそ、" + last + " " + first + " さん!")
}
このようにfmt.Scanは、基本の文字入力から複数項目の受け取りまで対応できます。まずは「変数を用意する → プロンプトを表示する → fmt.Scanで受け取る → fmt.Printlnで確認する」という流れを、ゆっくり繰り返して慣れていきましょう。
4. 数字を入力して足し算する例
今度は、数字を2つ入力して足し算する例を見てみましょう。数字の入力では、変数の型をintにします。intは整数(小数点がない数)を表します。
package main
import "fmt"
func main() {
var a, b int
fmt.Print("1つ目の数字を入力してください:")
fmt.Scan(&a)
fmt.Print("2つ目の数字を入力してください:")
fmt.Scan(&b)
fmt.Println("合計は:", a + b)
}
入力と出力の流れが理解できると、いろいろなプログラムが作れるようになります。
5. よくある間違いと注意点
- 入力するときにスペースで区切る必要がある:
たとえば、fmt.Scan(&a, &b)と複数の変数に一度に入力する場合は、スペースで区切って1行で入力する必要があります。 - &(アンパサンド)を忘れない:
fmt.Scanでは、変数の前に必ず&をつけましょう。これがないとエラーになります。 - Enterキーで確定:
入力後に必ずEnterキーを押して確定させてください。
初心者の方は、最初は間違っても大丈夫です。何度も試しながら、少しずつ慣れていきましょう。
6. 出力と入力を組み合わせたミニアプリ
最後に、出力と入力を両方使った簡単なミニアプリを作ってみましょう。年齢を入力して、その人の生まれた年を計算するプログラムです。
package main
import "fmt"
func main() {
var age int
fmt.Print("あなたの年齢を入力してください:")
fmt.Scan(&age)
birthYear := 2025 - age
fmt.Println("あなたの生まれた年は、", birthYear, "年ですね。")
}
このように、fmt.Printlnとfmt.Scanを使いこなすことで、Go言語で会話のようなプログラムが書けるようになります。
まとめ
この記事では、Go言語でよく使われる出力関数fmt.Printlnとfmt.Print、そして入力関数fmt.Scanの基本的な使い方を、初心者にもわかりやすく丁寧に解説しました。fmt.Printlnを使えば、文字列や数値を画面に表示し、最後に自動で改行されるというシンプルながら便利な動作を理解できたはずです。また、fmt.Printとの違いによって、改行を制御できることも学びました。
入力の部分では、fmt.Scanを使ってキーボードから値を受け取る方法を説明しました。変数の前に&(アンパサンド)をつける理由や、変数の型によって取り扱うデータが異なる点も初心者向けに細かく紹介しました。文字列の入力や整数の読み取りなど、現場でもよく使われる具体例をもとに理解を深めたことでしょう。
特に、出力と入力を組み合わせたミニアプリでは、実際に年齢を入力し、そこから生まれ年を計算するという実用的かつわかりやすい構成にすることで、「入力 → 処理 → 出力」の一連の流れを体験できたと思います。こうした小さなプログラムを自分で少しずつ改造していくことで、Go言語の学習がどんどん楽しくなっていきます。
ここでもう一つ練習として、入力された2つの整数の平均値を求める簡単なアプリを作ってみましょう。今まで学んだ内容を復習するのにぴったりの例です。
package main
import "fmt"
func main() {
var x, y int
fmt.Print("1つ目の整数を入力してください:")
fmt.Scan(&x)
fmt.Print("2つ目の整数を入力してください:")
fmt.Scan(&y)
avg := (x + y) / 2
fmt.Println("2つの平均値は:", avg)
}
このプログラムでは、2つの整数を受け取ってから平均値を計算して出力します。整数同士の割り算では、小数点以下は切り捨てられるので、その点にも注意しておきましょう。
Go言語では、基本的な入出力がしっかりできるようになると、様々なアプリケーションやシステムの土台を作る力がついてきます。まずはエラーを恐れず、表示されるメッセージを見ながら試してみることが大切です。
生徒
「先生、Go言語での出力と入力のやり方、かなりわかるようになってきました!」
先生
「お、それはいいですね。fmt.Printlnとfmt.Scanの使い方を覚えたことで、いろんな処理が書けるようになりますよ。」
生徒
「最初は&の意味とか少し難しかったけど、ちゃんと理由を知ったら納得できました!」
先生
「そうですね。変数に値を入れるときは『ここに入れて』って教える必要があるから、そのときに&を使うんですよ。」
生徒
「出力も改行あり・なしの違いでPrintlnとPrintを使い分けられるんですね。ちょっとずつ面白くなってきました!」
先生
「そうやって一歩ずつ理解していくのが大切です。次は少しだけ条件分岐や繰り返し処理にもチャレンジしてみると、もっとできることが広がりますよ。」
この記事を読んだ人からの質問
プログラミング初心者からのよくある疑問/質問を解決します
Go言語で画面に文字を出力するにはどうすればいいですか?fmt.Printlnとfmt.Printの違いも知りたいです。
Go言語では、画面に文字を出力するためにfmt.Printlnとfmt.Printを使います。fmt.Printlnは出力した後に自動で改行するため、次の文字が別の行に表示されます。一方でfmt.Printは改行を行わないので、連続して同じ行に文字を出したいときに便利です。Go言語の出力は初心者が最初に覚えるポイントなので、違いを意識しながら使うと理解が進みます。同じGoプログラムでも使い分けによって表示結果が変わるため、プログラミングの基本としてとても重要な知識になります。
【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導
「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。
本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。
具体的な開発内容と環境
【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。
【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。
この60分で得られる3つの理解
「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。
データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。
ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。
※本講座は、将来的にバックエンドエンジニアやクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。
初めてのGo言語を一緒に学びましょう!