こんにちは!今回は前回初挑戦したGo言語の続きを進めていきたいと思います。初めてなので疑問に思ったところなどを掘り返し、少し新しいことに挑戦していきたいと思います。
今回もWindows11 , VSCode, Go言語で進めていきます。
前回の『Hello, world!』の復習から
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
何のへんてつもないGo言語の「Hello, world!」ですが、気になったのは2つありました。
「Package main」と「import “fmt”」です。
Package main について
Go言語では、コードは パッケージ に属するようです。package
キーワードを使って、そのコードがどのパッケージに属しているかを宣言します。C言語やJavaと同じですね。
main
パッケージについて- 特別な役割を持つパッケージです。
- Goプログラムのエントリーポイントを示します。
main
パッケージを含むコードが必ず存在しないと、実行可能なプログラムは作成できません。 - このパッケージ内に、
func main()
を定義する必要があります。このmain()
関数がプログラムのスタート地点です。
- パッケージの用途
- Goでは、コードを整理し、再利用可能にするためにパッケージを利用します。
- 例:
fmt
はフォーマット処理用の標準パッケージ、math
は数学演算用のパッケージです。
import “fmt”について
Go言語では、import
文を使って必要なパッケージを現在のコードに読み込みます。この「パッケージ」は、他の言語における「ライブラリ」や「モジュール」と似た役割を果たします。たとえば、標準パッケージであるfmt
(フォーマット出力)やtime
(時間操作)をコード内で使用するには、import
文で宣言します。
Goでは、標準パッケージであってもimport
文を省略せず明示的に記述するのが基本ルールです。また、パッケージ名が長く使いづらい場合には、エイリアス(別名)を設定して簡潔に利用することができます。
fmt
パッケージについてfmt
(フォーマット) はGoの標準パッケージの一つです。- 主に以下のような入出力操作を提供します。
- 標準出力にテキストを表示:
fmt.Println()
,fmt.Printf()
- 文字列をフォーマット:
fmt.Sprintf()
- 標準入力を取得:
fmt.Scan()
- 標準出力にテキストを表示:
- 使い方の例
fmt.Println("Hello World!") // 改行付きで文字列を表示
fmt.Printf("こんにちは、%s さん\n", "Go言語") // 書式指定で表示
エイリアスを使ったインポート
import f "fmt"
func main() {
f.Println("Hello, alias!")
}
パッケージを使う理由
- 再利用性: 標準ライブラリや他のパッケージのコードを利用して、ゼロから機能を実装する必要を省けます。
- 機能の分離: 各パッケージは特定の機能に焦点を当てており、管理しやすくなります。
復習のまとめ
package main
: 実行可能なプログラムを作成するための特別なパッケージ。import "fmt"
: 標準出力などを行うために、Goの標準ライブラリfmt
をインポート。
今日のお題
さて、今日のお題は『Go言語 fmt & time package と3種類のPrint文』でした。
用意したGoコードは以下の通りです。
package main
import (
"fmt"
"time"
)
func main() {
var name string
fmt.Print("名前を入力してください: ")
fmt.Scanln(&name)
// 現在の日時を取得
now := time.Now()
// 日付と時刻をフォーマットして表示
fmt.Printf("こんにちは、%sさん!\n", name)
fmt.Printf("今日は %s です。\n", now.Format("2006年1月2日"))
}
PrintfとScanlnを見たとき、C言語に似ていると感じて個人的に興奮しました。
また、Print文が3種類ある点にも興味を惹かれますね。さらに、新しいライブラリであるtimeも登場しており、これも気になります。
実行結果は以下の通りです。
コードの説明
import "time"
:- 現在の日付や時刻を取得するために
time
パッケージをインポートします。
- 現在の日付や時刻を取得するために
time.Now()
:- 現在の日時を取得する関数です。
now.Format("2006年1月2日")
:time.Time
型のデータをフォーマットして文字列として表示します。- Goでは、このフォーマット文字列がユニークで、
2006-01-02 15:04:05
のように指定することで日付と時刻を整形します。
- 挨拶と日時を表示:
fmt.Printf
を使って、名前と日時を組み合わせたメッセージを表示します。
実行例
名前を入力してください:Miyakawa
こんにちは、Miyakawaさん!
今日は 2024年12月6日 です。
新たに登場したPrintとPrintfのコマンドについて考えてみました。
そういえば、JavaにはPrintlnやprintというコマンドがありましたね。
一方、C言語ではprintfが標準的に使用されていた記憶があります。そこで、今回Print、Println、Printfについて整理してみることにしました。
1. fmt.Print
- 目的: 単純に文字列や値を出力する。
- 改行しない: 出力後に自動で改行されません。
- 例
fmt.Print("こんにちは")
fmt.Print("世界")
出力
こんにちは世界
使う場面:単語の後ろに改行コードがないため、ひとつなぎの文になります。複数の値を連続で出力したい場合などに利用します。
2. fmt.Println
- 目的: 改行付きで文字列や値を出力する。
- 改行する: 出力後に自動で改行されます。
- 例
fmt.Println("こんにちは")
fmt.Println("世界")
出力
こんにちは
世界
使う場面: 改行コードが自動で付与されます。各出力を見やすく改行して表示したい場合。
3. fmt.Printf
- 目的: フォーマット指定子を使って、出力の形式を細かく制御する。
- 改行しない: 必要なら明示的に
\n
を追加する必要があります。 - 例
name := "太郎"
age := 30
fmt.Printf("こんにちは、%sさん!あなたは%d歳です。\n", name, age)
出力
こんにちは、太郎さん!あなたは30歳です。
主なフォーマット指定子
%s
: 文字列%d
: 整数%f
: 浮動小数点数%v
: 任意の型の値%T
: 値の型
使う場面: 出力内容を整形する必要がある場合や、複雑な情報を見やすく表示したい場合。
Print, Println, Printf まとめ
メソッド | 改行の有無 | 主な用途 |
---|---|---|
Print | なし | 単純な文字列・値を出力したい場合 |
Println | あり | 単純な文字列・値を出力したい場合 |
Printf | なし | 書式指定でフォーマットしたい場合 |
総合まとめ
この記事では前回の『Hello, World!』の振り返りからの繋がりで、Go言語の出力方法をまとめました。
また、fmt 以外の time ライブラリを使ってみました。
複数のライブラリを同時にインポートする場合は( )をうまく使うことを学習しました。
用途に応じた使い分けをマスターし、コードの効率と可読性を向上させていきたいと思います。
コメントを残す