Golang学习-关键字

简单介绍Go中25个关键字及其语法

# 关键字

Go共有25个保留关键字

# 包管理(2个):

# import

用于导入包,这样就可以使用包中被导出的标识符。导入格式如下:

1
2
3
4
import "fmt"   //直接import
import f "fmt" //添加包别名
import . "fmt" //代表导入包,使用时不用加包名
import _ "fmt" //不使用包中的标识符,只需要包的副作用(init函数,包级变量...)

# package

用于声明包的名称,需放在go文件所有代码的最前面。一个包由一个或多个go源文件组成,需放在同一个目录下,且同一个目录下的这些go文件的package的名字只能有一个,且不能为"_"。 package <packagename>

# 程序实体声明与定义(8个):

# chan

用于声明channel(信道)。信道提供一种机制使两个并发执行的函数实现同步,并通过传递具体元素类型的值来通信。

1
2
3
chan T                // 可以被用来发送和接收类型T的值
chan<- T              // 只能被用来发送浮点数
<-chan T              // 只能被用来接收整数

# const

用于定义常量,一旦创建,不可赋值修改

# func

func 用于定义函数。Go函数支持可变参数且返回值支持多个,但不支持默认参数。如果函数存在多个返回值形参则需要使用小括号括起来,定义格式如下:

1
2
3
func funcName(){}                          //无参无返回值
func funcName(t T) T {}                    //有参有返回值
func funcName(t T, list ...T) (T1,T1) {}   //有变参有多个返回值

# interface

interface 用于定义接口。一个接口是一个方法集,如果一个类型实现了一个接口中的所有方法集,那么说明该类型实现此接口。接口类型变量可以存储任何实现了该接口的类型的值。特别的,interface{}表示空接口类型,默认地,所有类型均实现了空接口,所以interface{}可以接收任意类型值。

# map

map 用于声明映射变量。映射属容器类类型,是一个同种类型元素的无序组,通过唯一的键可以获取对应的值。可以使用 make 创建 map 变量,在定义 map 时可以省略容量,超出容量时会自动扩容,但尽量提供一个合理的初始值。未初始化的值为 nil。

# struct

struct 用于定义结构体。结构体属容器类型,是多个相同或不同类型值的集合 。一个结构体的零值是类型集合中所有类型的零值。

# type

type 用于定义类型,比如定义 struct、interface、func 与等价类型。

# var

var 用于申明函数级变量和包级变量。

# 程序流程控制(15个):

# 循环

for 是 Go 中唯一用于循环结构的关键词, 有三种使用方式:1. 单条件 2. 循环变量 3 range

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
// for 单条件用法 相当于while
i := 0
for i < 10 {
    fmt.Println(i)
    i++
}
// for 循环变量
for i := 0; i < 10; i++ {
    fmt.Println(i)
}
// for range 用法
s := []int{1, 2, 3}
for i, v := range s {
    fmt.Println(i, v)
}
  • break continue
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
// break 跳出本次循环
for i := 0; i < 10; i++ {
    if i == 5 {
        break
    }
    fmt.Println(i)
}
// continue 跳过本次循环
for i := 0; i < 10; i++ {
    if i == 5 {
        continue
    }
    fmt.Println(i)
}

# 条件语句

  • if else else if
1
2
3
4
5
6
7
if i == 1 {
    fmt.Println("i == 1")
} else if i == 2 {
    fmt.Println("i == 2")
} else {
    fmt.Println("i != 1 && i != 2")
}
  • switch default case

    1
    2
    3
    4
    5
    6
    7
    8
    
    switch i {
    case 1:
        fmt.Println("i == 1")
    case 2:
        fmt.Println("i == 2")
    default:
        fmt.Println("i != 1 && i != 2")
    }
    

# 跳转控制

  • return

Go中一个函数可以有一个或者多个返回值,返回值通过return指定。

  1. return关键字中指定了参数时,返回值可以不用名称。如果return省略参数,则返回值部分必须带名称,当返回值带有名称时,必须使用()包起来
  2. 在一个函数块里,任何在return之后的代码都不会执行
  • defer
  • goto

# 并发控制

  • go
  • select
Licensed under CC BY-NC-SA 4.0