Википедия определяет шаблон Singleton:

В разработке программного обеспечения одноэлементный шаблон - это шаблон проектирования программного обеспечения, который ограничивает создание экземпляра класса одним единственным экземпляром. Это полезно, когда нужен ровно один объект для координации действий в системе.

Термин происходит от математической концепции синглтона.

Общее использование

Выполнение

Есть разные способы реализовать шаблон singleton в Go, но также довольно легко ошибиться. Правильный способ реализовать одноэлементный шаблон в Go - использовать функцию Once.Do () пакета синхронизации. Эта функция гарантирует, что указанный вами код выполняется только один раз и никогда более одного раза.

одноэлементный пакет с Once.Do ()

package singleton

import (
    "sync"
)

type singleton struct {}

var instance *singleton
var once sync.Once

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

Примечание. Я начал реализовывать в golang версию всех известных шаблонов проектирования.

Ссылка на Github Repo: https://github.com/gauravtayal0/go-designpattern.