Skip to content

自定义once包,解决官方once io操作导致失败情况

Notifications You must be signed in to change notification settings

Xuzan9396/zonce

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zonce

官方的sync.Once 不管有没有错误,始终执行一次,但是会出现一种问题有时候经过网络io操作的,可能这个时候出现错误,例如数据库,或者其他中间件刚刚好网络异常,或者网络因素导致了初始化失败,这个时候代码就会有问题
自定义once包,解决初始化错误的情况,返回了err,如果有err,下次执行还会访问once里面内容
package main

import (
	"errors"
	"log"
)
import "github.com/Xuzan9396/zonce"

func main() {
	var onces zonce.Once
    // 第一次执行中出现了失败,模拟初始化失败了
	err := onces.Do(func() error {
		log.Println("执行一次1")
		return errors.New("模拟实例化中间出现错误")
	})
	log.Println(err)

	// 第二次成功了
	err = onces.Do(func() error {
		log.Println("执行一次2")
		return nil
	})
	log.Println(err)


	// 第三次不会重新实例化了
	err = onces.Do(func() error {
		log.Println("执行一次3")
		return nil
	})
	log.Println(err)

}

About

自定义once包,解决官方once io操作导致失败情况

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages