パッケージは、コードの再利用の原則、別名DRY(Don’t Repeat Yourself)の原則を重視することができます。
これにより、構造化された方法で簡潔なコードを書くことができるようになります。
この投稿では、Goのパッケージについて詳しく解説します。
Golangのパッケージとは
パッケージとは、基本的に、ある特定の目的のためのソースコードのコンテナのことです。
例えば、io パッケージには入出力システムのコードが含まれ、fmt パッケージは文字列のフォーマットとコンソールへのロギングを扱います。
package(パッケージ)のインポート方法
パッケージを使用するためには、パッケージをインポートする必要があります。
パッケージをインポートしても使用しない場合、Goはエラーを出します。そうしないと、空白の識別子を使わなければならなくなるので、注意が必要です。
単一のパッケージをimportする場合↓
import "パッケージ名"
複数のパッケージをimportする場合↓
import (
"パッケージ名1"
"パッケージ名2"
)
パッケージのエイリアスとインポートを無視する方法
インポートする際のパッケージは、以下のようにエイリアスすることができます。
package main
import f "fmt"
func main() {
f.Println("Hiii") // Hiii
}
インポートの無視は、パッケージインポートの前に空白の識別子を置いたときに発生します。
これによってimport but not usedのエラーは無視されます。以下はその方法です。
package main
// 空白識別子でimportを無視する
import _ "fmt"
func main(){
// パッケージを使わなくてもエラーが起きない
}
package(パッケージ)のexportとnon-export
パッケージの項目は、正しくエクスポートされた場合のみアクセス可能です。そうでなければ、プライベートなものであり、その内部にしかアクセスできません。
package hello
var Hello := "Hello World" // 最初の文字が大文字だとexportされpublicであることを意味する
var bye := "See ya all" // 最初の文字が小文字だとnon-exportでありprivateとなる
項目をエクスポートするには、その最初の文字を大文字にするだけです。これは、パッケージ内でエクスポートされるメンバーを作成するときのルールです。
パッケージのネスト
パッケージは任意の深さまで入れ子にすることができます。つまり、1つのパッケージが複数のサブパッケージを含むことができます。
こんな感じ↓
packageone/
|--packagetwo/
|--packagethree/
|--packagefour/
カスタムパッケージの作成
カスタムパッケージを作成するのは簡単な作業です。カスタムパッケージのためのディレクトリを作成する必要があります。
以下は、基本的なカスタムパッケージの例です。