0%

Go语言入门基础

内建变量

  • bool
  • string
  • (u)int[8/16/32/64],uintptr
  • byte
  • rune go的char类型,长度32位
  • float[32/64]
  • complex[64/128] 复数类型

变量定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 1 单个定义
var a int
var b string

// 2 多个定义
var a, b int = 3, 4

// 3 类型判断 省略类型 TypeDeduction
var a, b , = 3, "4", true

// 4 省略var
a,b = 1, 2

// 5 函数外定义 包内部定义
var(
aa = 1
bb = "bb"
)

常量与枚举

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// 1 单个定义
const filename = "xxx"

// 2 多个定义
const a, b = 1, 3

// 3 定义多个
const (
...
)

// 4 枚举类型 iota表示值自增
func enums() {
const(
cpp = iota
- //可跳过一个值
java
python
golang
javascript
)
}

// 5 枚举类型 iota计算
const(
b = 1 << (10 * iota)
kb
mb
gb
tb
pg
)

条件查询

if

1
2
3
4
5
6
7
8
9
10
11
12
13
// 1 
if (xxx != nil) {

} else {

}

// 2
if result, err := ioutils.Readfile(xxx);err != nil {

} else {

}

switch

1
2
3
4
5
6
7
8
switch op {
case "*":
result = a
case "-":
result = 2
default:
result = 3
}

循环

for

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
sum := 0
for i := 1; i <= 100; i++ {
sum += i
}

// 死循环
for {
// ...
}

// 省略初始化条件 相当 while
for ; i != 2; i++ {
// ...
}

// 数组遍历
for _, v := range arr {
// ...
}

for i := 0; i < len(arr); i++ {
// ...
}

函数

函数式编程 可以值是函数嵌套函数

没有默认参数、可选参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 单个返回值
func test(a,b int, c string) int {
// ...
}
// 多个返回值
func test(a,b int, c string) (int, int) {
// ...
}
// 命名返回值
func test(a,b int, c string) (d, ec int) {
// ...
}
// 不限定数量的参数
func test(numbers ...int) int {
// ...
}

指针

  • go语言只有值传递,没有引用传递
  • 引用传递可以采取指针传递实现

&variable_name 传入指针

var variable_name *type 定义指针

数组

  • 数量写在类型前面
  • ...表示编译器数数量
  • 长度不一样算作不同的类型 比如 [5]int [10]int是不同的类型
1
2
3
var [5]int // 一维数组
var [4][5]int // 二维数组
var [...]int{1,2,3} // 编译器数长度
1
2
3
4
5
6
7
8
// 数组遍历
for _, v := range arr {
// ...
}

for i := 0; i < len(arr); i++ {
// ...
}