Go内置关键字(25个均为小写)

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

Go注释方法

  • // 单行注释
  • /* */ 多行注释

代码组织结构

  • Go程序是通过 package 来组织的(与python类似)

  • 只有 package 名称为 main 的包可以包含 main 函数

  • 一个可执行程序 有且仅有 一个 main 包

  • 通过 import 关键字来导入其它非 main

  • 通过 const 关键字来进行常量的定义

  • 通过在函数体外部使用 var 关键字来进行全局变量的声明与赋值

  • 通过 type 关键字来进行结构( struct )或接口( interface )的声明

  • 通过 **func 关键字来进行函数的声明

Go导入 package 的格式

1
2
3
4
5
import "fmt"
import "os"
import "io"
import "time"
import "strings"
1
2
3
4
5
6
7
import (
"fmt"
"os"
"io"
"time"
"strings"
)
  • 导入包之后,就可以使用格式<PackageName>.<FuncName>来对包中的函数进行调用
  • 如果导入包之后 未调用 其中的函数或者类型将会报出编译错误:
1
imported and not used: "io"

package别名

  • 当使用第三方包时,包名可能会非常接近或者相同,此时就可以使用别名来进行区别和调用。
1
2
3
4
5
6
7
8
9
package main

import (
io "fmt"
)

func main() {
io.Println("Hello World!")
}
  • **省略调用不建议使用**,易混淆
  • 不可以和别名同时使用
1
2
3
4
5
6
7
8
9
10
package main

import (
. "fmt"
)

func main() {
// 使用省略调用
Println("Hello World!")
}

可见性规则

  • Go语言中,使用 大小写 来决定该常量、变量、类型、接口、结构或函数是否可以被外部包所调用
  • 根据约定,函数名 首字母 小写 即为private,函数名 首字母 大写 即为public
1
2
3
4
5
6
7
8
func getField(v reflect.Value, i int)  {
val := v.Field(i)
...
}

func Printf(format string, a ...interface{}) (n int) {
return Fprintf(os.Stdout, format, a...)
}