91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

golang單例模式實現的方法是什么

小億
83
2024-01-03 07:41:04
欄目: 編程語言

在Go語言中,可以通過如下方法實現單例模式:

  1. 基于sync.Once實現的單例模式:
package singleton

import "sync"

type singleton struct{}

var instance *singleton
var once sync.Once

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

在這個例子中,通過sync.Once實現了只執行一次的功能,保證了實例只會被創建一次。

  1. 基于sync.Mutex實現的單例模式:
package singleton

import "sync"

type singleton struct{}

var instance *singleton
var mu sync.Mutex

func GetInstance() *singleton {
    mu.Lock()
    defer mu.Unlock()

    if instance == nil {
        instance = &singleton{}
    }
    return instance
}

在這個例子中,通過sync.Mutex實現了互斥鎖,保證了實例的創建和獲取是線程安全的。

這兩種方法都可以實現單例模式,具體選擇哪種方式取決于實際需求和偏好。

0
皮山县| 嘉兴市| 时尚| 霍邱县| 蒲江县| 绵阳市| 成都市| 石门县| 滨海县| 新和县| 柘荣县| 青海省| 凌源市| 株洲市| 武威市| 呼伦贝尔市| 大姚县| 安新县| 扶余县| 莎车县| 密云县| 杭州市| 明光市| 乐昌市| 渭南市| 筠连县| 宜都市| 济宁市| 揭东县| 靖安县| 大安市| 手机| 县级市| 贡嘎县| 东兰县| 科技| 齐河县| 玉屏| 隆回县| 木里| 邳州市|