[go] Go 언어의 싱글톤 디자인 패턴과 활용 예시

Go 언어에서 싱글톤(Singleton)은 전역 변수(global variable)를 사용하여 하나의 인스턴스만을 생성하고, 그 인스턴스에 접근하는 패턴을 의미합니다. 다른 언어와 달리 Go 언어에서는 싱글톤 패턴을 구현하는데 있어 몇 가지의 유의할 점이 있습니다.

패턴 구현

package singleton

type singleton struct {
    data string
}

var instance *singleton

func GetInstance() *singleton {
    if instance == nil {
        instance = &singleton{"data"}
    }
    return instance
}

위의 예시에서 GetInstance 함수를 통해 싱글톤 인스턴스에 접근할 수 있습니다. 이때, 인스턴스가 아직 생성되지 않았을 경우에만 인스턴스를 생성하고, 이미 존재하는 경우에는 기존 인스턴스를 반환합니다.

패턴 활용

싱글톤 패턴은 전역 상태를 유지하고 한 번의 인스턴스만을 관리하기 때문에, 데이터베이스 연결, 로깅, 캐싱 등과 같이 전역 상태가 필요한 서비스에 유용하게 활용될 수 있습니다. 또한, 어플리케이션의 설정이나 상태를 관리하는 데에도 활용될 수 있습니다.

마무리

Go 언어에서 싱글톤 패턴을 구현하는 방법에 대해 알아보았습니다. 싱글톤 패턴은 전역 상태를 관리하기 위한 유용한 패턴이지만, 오용될 경우 전역 상태의 의존성을 높일 수 있으므로 신중한 사용이 필요합니다.

참조: Go 언어 디자인 패턴 - 싱글톤

문의: go@example.com