Go语言核心之美 1.1-命名篇

命名篇

1.Go的函数、变量、常量、自己定义类型、包(Package)的命名方式遵循以下规则:

1)首字符能够是随意的Unicode字符或者下划线

2)剩余字符能够是Unicode字符、下划线、数字

3)字符长度不限

2.Go仅仅有25个keyword

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

3.Go还有37个保留字

Constants:true false iota nil
Types:int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error
Functions:make len cap new append copy close delete
complex real imag
panic recover

4.可见性

1)声明在函数内部。是函数的本地值,相似private

2)声明在函数外部,是对当前包可见(包内全部.go文件都可见)的全局值,相似protect

3)声明在函数外部且首字母大写是全部包可见的全局值,相似public

5.命名风格

对本地变量,Go倾向于使用简短的命名方式,比如for循环中的i。变量的作用域越大,那变量的命名就要更有意义,比如RingCache。

Go变量建议使用驼峰命名法,比如parseRequest。

缩写短语要么全部大写。要么全部小写。比如htmlEscape,HTMLEscape。

声明篇

有四种主要声明方式:var, const, type ,func(兴许文章会具体介绍)。

Go的程序是保存在多个.go文件里,文件的第一行就是package XXX声明,用来说明该文件属于哪个包(package),package声明下来就是import声明,再下来是无关吮吸的类型。变量。常量,函数的声明。比如以下这个程序声明了一个常量、一个函数、一些变量

package main

import "fmt"

const boilingF = 212.0

func main() {
    var f = boilingF
    var c = (f - 32) * 5 / 9
    fmt.Printf("boiling point = %g°F or %g°C\n", f, c)
    // 输出:
    // boiling point = 212°F or 100°C
}

常量boillingF是包内可见的变量(就像函数main一样),f和c就是main函数的本地变量,仅仅对main函数可见。假设一个变量是包内可见的,不仅仅当前的.go文件可见并且包内的全部.go文件都是可见的。

函数声明包括一个函数名。參数列表, 返回值列表和函数体。假设函数没有返回值,则返回列表能够省略。函数从第一条语句開始运行,直到运行return语句或者运行函数的最后一条语句。在以下的代码中,main函数调用了fToC函数两次,声明了两个本地的常量

package main

import "fmt"

func main() {
    const freezingF, boilingF = 32.0, 212.0
    fmt.Printf("%g°F = %g°C\n", freezingF, fToC(freezingF)) // "32°F = 0°C"
    fmt.Printf("%g°F = %g°C\n", boilingF, fToC(boilingF))   // "212°F = 100°C"
}

func fToC(f float64) float64 {
    return (f - 32) * 5 / 9
}