0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Goでシングルトンする

Posted at

Goでシングルトン実装をしようとしてググってみても思ったような情報が得られなかったので諦めて自分なりの書き方で実装しました。

これはそのメモです。

singleton.go
package singleton

// 外部で好き勝手インスタンス作られたら困るので非公開
type singleton struct {
  Property any
}

func (singleton) Method() {
  // なにか処理
}

// 元の型のポインタ型をエイリアスとして定義して公開
// 外部でシングルトンインスタンスを引数に指定できるようにするため
// (シングルトンインスタンスはたぶん参照渡ししかしないだろうということでポインタ型にしています)
type Singleton *singleton

// シングルトンインスタンス
var instance Singleton

func GetInstance() Singleton {
  if instance == nil {
    instance = &singleton{
      Property: 初期値,
    }
  }
  return instance
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?