美文网首页
Golang单例模式(非线程安全)

Golang单例模式(非线程安全)

作者: FredricZhu | 来源:发表于2019-06-18 16:36 被阅读0次

singleton.go

// singleton.go
package singleton

type singleton struct {
    count int
}

var instance *singleton

func GetInstance() *singleton {
    if instance == nil {
        instance = new(singleton)
    }
    return instance
}

func (s *singleton) AddOne() int {
    s.count++
    return s.count
}

func (s *singleton) GetCount() int {
    return s.count
}

singleton_test.go

// singleton_test
package singleton

import (
    "testing"
)

func TestGetInstance(t *testing.T) {
    counter1 := GetInstance()
    if counter1 == nil {
        t.Error("A new connectin object must have been made")
    }

    expectCounter := counter1

    currentCount := counter1.AddOne()
    if currentCount != 1 {
        t.Errorf("After called for the first time, the count value should be 1 but found: %v", currentCount)
    }

    counter2 := GetInstance()
    if counter2 != expectCounter {
        t.Error("Singleton instance must not be different")
    }

    currentCount = counter2.AddOne()
    if currentCount != 2 {
        t.Errorf("After calling twice of AddOne, currentCount should be 2 but found: %v", currentCount)
    }
}

程序输出如下,


image.png

相关文章

  • 单例模式

    Golang 单例模式的几种形式 1.非线程安全,虽然说是单例模式,但是如果实例正在创建中,此时多个线程同时访问,...

  • Golang单例模式(非线程安全)

    singleton.go singleton_test.go 程序输出如下,

  • Java设计模式一--单例模式

    一、单例模式单例模式主要分为饿汉式、懒汉式(非线程安全、线程安全、双重检查)、静态内部类、枚举。1.饿汉式 2.懒...

  • 单例设计模式

    饿汉式,线程安全 但效率比较低 饱汉式,非线程安全 饱汉式,线程安全简单实现 线程安全 并且效率高 单例模式最优...

  • 设计模式

    手写单例模式(线程安全) 你知道几种设计模式?单例模式是什么?Spring中怎么实现单例模式?

  • 单例模式实现对比

    参考链接: 单例模式 一、实现对比 二、实现方式 懒汉式(非线程安全) 懒汉式(线程安全) [推荐] 饿汉式 Cl...

  • 设计模式(2) 单例模式

    单例模式 线程安全的Singleton 会破坏Singleton的情况 线程级Singleton 单例模式是几个创...

  • 设计模式

    单例模式 非线程安全image.png 加锁: 函数结束自动释放锁线程安全有instance之后就没必要加锁了。但...

  • 面试复习-设计模式

    一、单例模式 确保一个类只有一个实例,并提供一个全局访问点。 线程不安全的单例模式 懒汉式 线程安全的单例模式: ...

  • 单例设计模式笔记

    记录几种单例模式写法。 饿汉模式(线程不安全) 懒汉模式(线程不安全) 懒汉锁模式(线程安全) 懒汉双重判断模式(...

网友评论

      本文标题:Golang单例模式(非线程安全)

      本文链接:https://www.haomeiwen.com/subject/eczfqctx.html