GolangのSingletonパターンを実装するコードの例は次のとおりです。

パッケージメイン

輸入 （
「FMT」
「同期」
））

タイプシングルトンstruct {}

varインスタンス *シングルトン
var Eleven sync.once

Fun Gretance（） *Singleton {
eleven.do（function（）{
instance =＆singleton {}
}）
インスタンスを返します
}

func main（）{
S1：= getnstance（）
S2：= getOnstance（）
s1 == s2の場合{
fmt.println（ "両方のインスタンスは同じです"）
} それ以外 {
fmt.println（ "インスタンスが異なる"）
}
}

この例では、単一の構造が作成され、構造の単一インスタンスを保存するためにグローバルインスタンス変数が定義されます。GenStance関数は、構造の唯一のインスタンスを返す責任があります。一度変数は、Gestance関数が1回だけ実行され、インスタンス変数が1回の初期化されることを保証するために使用されるSync.ceオブジェクトです。メイン関数では、getnstanceが2回呼び出され、両方の呼び出しが同じインスタンスを返すかどうかを確認します。
Aquí hay un ejemplo de código que implementa el patrón Singleton en Golang:

package main

import (
	"fmt"
	"sync"
)

type Singleton struct{}

var instance *Singleton
var once sync.Once

func GetInstance() *Singleton {
	once.Do(func() {
		instance = &Singleton{}
	})
	return instance
}

func main() {
	s1 := GetInstance()
	s2 := GetInstance()
	if s1 == s2 {
		fmt.Println("Both instances are the same")
	} else {
		fmt.Println("Instances are different")
	}
}

En este ejemplo, se crea una estructura Singleton y se define una variable global instance para almacenar una única instancia de la estructura. La función GetInstance es responsable de devolver la única instancia de la estructura. La variable once es un objeto sync.Once que se usa para asegurar que la función GetInstance se ejecute solo una vez y se inicialice la variable instance solo una vez. En la función main, se llama a GetInstance dos veces y se comprueba si ambas llamadas devuelven la misma instancia.