golang学习笔记-程序结构-名称

发布时间:2020-01-04编辑:lianpenglin阅读(1760)

        Go中函数、变量、常量、语句标签和包的名称遵循一个简单的规则:名称的开头是一个字母(Unicode中的字符即可)或下划线,后面可以跟任意数量的字符、数字和下划线,并区分大小写。如heapSort和Heapsort是不同的名称。

        Go有25个像if和switch这样的关键字,只能用在语法允许的地方,它们不能作为名称:

        break    default     func   interface select
        case     defer       go     map       struct
        chan     else        goto   package   switch
        const    fallthrough if     range     type
        continue for         import return    var

        另外,还有三十几个内置的预生命的常量、类型和函数:

        常量:true false iota nil

        类型:int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune string error

        函数:make len cap new append copy close delete complex real imag panic recover

        这些名称不是预留的,可以在生命中使用它们。我们将在很多地方看到对其中的名称进行重生命,但是要知道这有冲突的风险。

        如果一个实体在函数中声明,它只在函数局部有效。如果声明在函数外,它将对包里面的所有源文件可见。实体第一个字母的大小写决定其可见性是否挎包。如果名称以大写字母的开头,它是导出的,意味着它对包外是可见和可访问的,可以被自己包之外的其他程序所引用,像fmt包中的Printf。包名本身总是由小写字母组成。

        名称本身没有长度限制,但是习惯以及Go的编程风格倾向于使用短名称,特别是作用于较小的局部变量,你更喜欢看到一个变量叫i而不是theLoopIndex。通常,名称的作用域越大,就使用越长且更有意义的名称。

        风格上,当遇到由单词组合的名称时,Go程序员使用“驼峰式”的风格——更喜欢使用大写字母而不是下划线。所以标准库中的函数名采用QuoteRuneToASCII和parseRequestLine的形式,而不是采用quote_rune_to_ASCII和quote_rune_to_ASCII这样的形式。像ASCII和HTML这样的首字母缩写词通常使用相同的大小写,所以一个函数可以叫做htmlEscape、HTMLEscape或escapeHTML,但不会是escapeHtml。

标签golang

如果对你有用打赏一下吧!