bam6o0の記憶域

忘備録になればいいな

Go言語の勉強記録6bit

パッケージ

  • Goはソースファイルがパッケージ単位でグルーピングされる
  • パッケージには1つ以上のソースファイルが所属
  • 同一パッケージに所属している別のソースファイル内で宣言された定数、型、変数、関数といった識別子はアクセス可能
  • 関数内で宣言されたローカルな識別子にはアクセスできない。
  • パッケージ名はすべて小文字かつ単語ひとつからなることが推奨

エクスポート

  • パッケージ外で宣言された識別子にアクセスする方法
  • 識別子にパッケージ外からのアクセスを許可すること
  • エクスポートしたい識別子は先頭1文字をアルファベット大文字にする
  • ローカルな識別子はエクスポートされない

インポート

  • 他のパッケージでエクスポート宣言されている識別子を使用する方法
  • 最初に宣言されているパッケージをインポート宣言する必要がある。
  • インポート宣言はimport+パッケージのパス
  • パッケージのパスは文字列よりダブルクォート""で囲む
  • fmtパッケージはGo言語の標準ライブラリ
  • 時差いいのライブラリはGo言語をインストールしたディレクトリ下のpkg/~/fmt.aファイル
  • .a拡張子はライブラリファイルであることを表す。
  • インポートしたパッケージの識別子はパッケージ名.識別子名でアクセス可能
  • インポートしたパッケージにアクセスする際に使用する識別子は、指定しない場合パッケージ名になる。
  • 名前を変更したい場合はimport 識別子 "パッケージンのパス"

実行結果

$go run import.go
fmtパッケージの名前をformatに変更
  • インポート宣言したパッケージは使わないとコンパイルエラー
  • ブランク識別子を使えばエラー回避可能
import _ "パッケージのパス"

独自のパッケージを使用する

  • ソースファイルを特定のディレクトリに格納する必要がある。
  • my/sampleパッケージを作成し、そのパッケージに属するtest.goソースファイルを格納する場合
    mylibrary(任意のディレクトリ)
     └src
      └my
       └sample
         └test.go

  • ディレクトリツリー最上位パス(上記mylibrary)をドライブレターを含め、フルパスで環境変数GOPATHに登録する必要がある。

  • test.go内のpackage宣言
package sample //最下位のパッケージ名だけ記述
  • このmy/sampleパッケージのインポート
import "my/sample"