zoukankan      html  css  js  c++  java
  • 学习Go语言之单例模式

    单例模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象

     1 // 单例模式
     2 package main
     3 
     4 import (
     5     "fmt"
     6     "sync"
     7 )
     8 
     9 type manager struct{}
    10 
    11 // var iMutex *sync.Mutex = &sync.Mutex{}
    12 var once sync.Once
    13 
    14 var m *manager
    15 
    16 func Instance() *manager {
    17     // if m == nil {
    18     //     iMutex.Lock()
    19     //     defer iMutex.Unlock()
    20     //     if m == nil {
    21     //         m = new(manager)
    22     //     }
    23     // }
    24 
    25     //sync.Once,它有一个Do方法,在它中的函数go会只保证仅仅调用一次。所以可以不使用双重排它锁
    26     once.Do(func() {
    27         m = &manager{}
    28     })
    29 
    30     return m
    31 }
    32 
    33 func (p manager) Manage() {
    34     fmt.Println("manage...")
    35 }
    36 
    37 func main() {
    38     Instance().Manage()
    39 }
  • 相关阅读:
    检测mysq组复制的脚本
    centos7安装NFS
    mysql组复制安装
    springboot+VUE(一)
    redis集群配置
    codevs 3139 栈练习3
    codevs 3138 栈练习2
    codevs 2622 数字序列
    codevs 1054 电梯
    codevs 1507 酒厂选址
  • 原文地址:https://www.cnblogs.com/shi2310/p/10967564.html
Copyright © 2011-2022 走看看