sato's note

技術メモ

Golang パッケージ

パッケージ

パッケージの作成

ディレクトリ構成

src/
  foo/
    message.go

パッケージソース

message.go

package foo

var internalVar = "パッケージ内からしか読めません"
var externalVar = "パッケージ外から読めます"

func internalMessage() string {
    return "パッケージ内からのみ呼べる"
}

func Message() string {
    return "パッケージ外からも呼べる"
}

public または private キーワードは用意されていない。 プライベートにするには名前の先頭を小文字に。 パブリックにするには、名前の先頭を大文字に。

ビルドの実行

$ go build

モジュールの作成

$ go mod init github.com/myuser/foo
src/
  foo/
    go.mod
    message.go

ローカル パッケージ の参照

準備

go.modの作成

go mod init mypackage

go.modの編集

# go.mod
require github.com/myuser/foo v0.0.0
replace github.com/myuser/foo =>  path/to/foo

パッケージの使用

package main

import "github.com/myuser/foo"

func main() {
    println(foo.Message())
}

外部 (サードパーティ) パッケージの参照

package main

import (
    "rsc.io/quote"
)

func main() {
    println(quote.Hello())
}

go.mod

module helloworld

go 1.14

require (
    rsc.io/quote v1.5.2
)