sync.Once能确保实例化对象Do方法在多线程环境只运行一次,内部通过互斥锁实现 Do方法 Once类型的Do方法只接收一个参数,参数的类型必须是func(),即无参数无返回的函数.该方法的功能并不是对每一种参数函数都只执行一次,而是只执行首次被调用时传入的那个函数,并且之后不会再执行任何参数函数.所以,如果有多个需要执行一次的函数,应该为它们每一个都分配一个sync.Once类型的值. var once sync.Once for i, v := range make([]string,…