var _ http.Handler = (*Handler)(nil)
type smap struct {
sync.Mutex // only for unexported types(仅适用于非导出类型)
data map[string]string
}
type SMap struct {
mu sync.Mutex // 对于导出类型,请使用私有锁
data map[string]string
}
-
Channel 的 size 要么是 1,要么是无缓冲的
// 大小:1 c := make(chan int, 1) // 或者 // 无缓冲 channel,大小为 0 c := make(chan int)
-
枚举从 1 开始
type Operation int const ( Add Operation = iota + 1 Subtract Multiply ) // Add=1, Subtract=2, Multiply=3
在某些情况下,使用零值是有意义的(枚举从零开始),例如,当零值是理想的默认行为时。
-
Errors返回形式
-
这是一个不需要额外信息的简单错误吗?如果是这样,
errors.New
足够了。 -
客户需要检测并处理此错误吗?如果是这样,则应使用自定义类型并实现该
Error()
方法。 -
您是否正在传播下游函数返回的错误?如果是这样,请查看本文后面有关错误包装 section on error wrapping 部分的内容。
-
否则
fmt.Errorf
就可以了。如果客户端需要检测错误,并且您已使用创建了一个简单的错误
errors.New
,请使用一个错误变量。// package foo var ErrCouldNotOpen = errors.New("could not open") func Open() error { return ErrCouldNotOpen } // package bar if err := foo
-