是不是有锁

指针可以调用所有方法

不是吧 非指针类型也可以调用所有方法啊. go 不是会自动处理吗?
是不是某些情况下返回的类型要给接口赋值的时候. 会遇到什么不支持普通类型的场景.

1.指针效率高
2.为了以后拓展,比如单例,或者提前初始化,或者修改功能开放给下游

大佬第二点能详细解释一下吗? 由例子吗?

这里指"提前初始化,或者修改功能开放给下游"

提前初始化 是指初始化交给调用方实现是吗?
修改功能开放给下游, 是指开放给调用者的调用者?

我理解了 谢谢.

然后, 我想了一下 指针和单例有关系吗?

package singleton

import (
 "sync"
)

type singleton struct {}

var instance *singleton
var once sync.Once

func NewInstance() singleton {
 once.Do(func() {
 instance = singleton{}
 })
 return instance
}

这样写也没毛病啊...

其实这里使用指针会降低性能,返回指针使得 Storage 逃逸到堆上,否则可以直接栈上分配内存

#7 比如存储使用 redis,调用链的方式,在运行时动态修改他的 db.