Golang 守卫(断言)函数命名约定
Golang guard (assert) functions naming convention
我想知道是否有守卫(断言)函数的 golang 命名约定?我用谷歌搜索了一下,但找不到任何确定的东西。我在 "The Go Programming Language" 书中读到,使用 'must' 前缀是一种常见的做法。
我需要的功能示例:
package main
func divide(a, b int) int {
mustNotBeZero(b)
return a / b
}
func mustNotBeZero(n int) {
if n == 0 {
panic("cannot divide by zero")
}
}
func main() {
println(divide(5, 0))
}
这不是任何约定的 "part",但是 standard library 也使用 MustXX()
函数,所以如果您真的需要它,这是一个很好的模式。
示例:
导出:
func MustCompile(str string) *Regexp
func Must(t *Template, err error) *Template
src/syscall/dll_windows.go
:(在 Windows 上)
func MustLoadDLL(name string) *DLL
func (d *DLL) MustFindProc(name string) *Proc
未导出:
src/cmd/go/go_test.go
:
func (tg *testgoData) must(err error)
func (tg *testgoData) mustExist(path string)
func (tg *testgoData) mustNotExist(path string)
src/encoding/xml/xml.go
:
func (d *Decoder) mustgetc() (b byte, ok bool)
src/fmt/scan.go
:
func (s *ss) mustReadRune() (r rune)
src/reflect/value.go
:
func (f flag) mustBe(expected Kind)
func (f flag) mustBeExported()
func (f flag) mustBeAssignable()
src/syscall/dll_windows.go
:
func (d *LazyDLL) mustLoad()
func (p *LazyProc) mustFind()
我想知道是否有守卫(断言)函数的 golang 命名约定?我用谷歌搜索了一下,但找不到任何确定的东西。我在 "The Go Programming Language" 书中读到,使用 'must' 前缀是一种常见的做法。
我需要的功能示例:
package main
func divide(a, b int) int {
mustNotBeZero(b)
return a / b
}
func mustNotBeZero(n int) {
if n == 0 {
panic("cannot divide by zero")
}
}
func main() {
println(divide(5, 0))
}
这不是任何约定的 "part",但是 standard library 也使用 MustXX()
函数,所以如果您真的需要它,这是一个很好的模式。
示例:
导出:
func MustCompile(str string) *Regexp
func Must(t *Template, err error) *Template
src/syscall/dll_windows.go
:(在 Windows 上)func MustLoadDLL(name string) *DLL
func (d *DLL) MustFindProc(name string) *Proc
未导出:
src/cmd/go/go_test.go
:func (tg *testgoData) must(err error)
func (tg *testgoData) mustExist(path string)
func (tg *testgoData) mustNotExist(path string)
src/encoding/xml/xml.go
:func (d *Decoder) mustgetc() (b byte, ok bool)
src/fmt/scan.go
:func (s *ss) mustReadRune() (r rune)
src/reflect/value.go
:func (f flag) mustBe(expected Kind)
func (f flag) mustBeExported()
func (f flag) mustBeAssignable()
src/syscall/dll_windows.go
:func (d *LazyDLL) mustLoad()
func (p *LazyProc) mustFind()