我想知道是否有用于保护(断言)函数的 golang 命名约定?我用谷歌搜索了一下,但找不到任何明确的东西。我在《The Go 编程语言》一书中读到,使用 '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))
}
最佳答案
这不是任何约定的“一部分”,而是 standard library还使用 MustXX()
函数,因此如果您确实需要的话,这是一个很好的模式。
示例:
导出:
-
func MustCompile(str string) *Regexp
-
func Must(t *Template, err error) *Template
-
src/syscall/dll_windows.go
:(在 Windows 上)func MustLoadDLL(名称字符串) *DLL
func (d *DLL) MustFindProc(name string) *Proc
未导出:
-
src/cmd/go/go_test.go
:func (tg *testgoData) Must(err error)
func (tg *testgoData) MustExist(路径字符串)
func (tg *testgoData) MustNotExist(路径字符串)
-
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 标志)mustBe(预期种类)
func(f 标志)mustBeExported()
func(f 标志)mustBeAssignable()
-
src/syscall/dll_windows.go
:func (d *LazyDLL) MustLoad()
func (p *LazyProc) MustFind()
关于Golang 保护(断言)函数命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39590458/