"Go 싱글턴"의 두 판 사이의 차이

18번째 줄: 18번째 줄:
once.Do(
once.Do(
func() {
func() {
fmt.Println("Creating single instance now.")
singleInstance = &single{}
singleInstance = &single{}
})
})
} else {
fmt.Println("Single instance already created.")
}
}
return singleInstance
return singleInstance
}
}

2023년 4월 17일 (월) 13:15 판

1 개요

Go 싱글톤
package main

import (
	"fmt"
	"sync"
)

type single struct {}
var singleInstance *single
var once sync.Once

func getInstance() *single {
	if singleInstance == nil {
		once.Do(
			func() {
				singleInstance = &single{}
			})
	}
	return singleInstance
}
package main

import "time"

func main() {
	for i := 0; i < 9; i++ {
		go getInstance()
	}
	time.Sleep(time.Second)
}

2 같이 보기

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}