golang学习笔记
基本语法
关键字(key word) && 变量
关键字
golang仅有25个关键字,如下:var import type return const if else for range break select default goto switch fallthrough func interface case chan continue defer go map struct package
变量声明&&初始化&&赋值
golang变量声明方式与C/C++系语言有明显不同,对于golang这种声明方式知乎上有讨论为什么 Go 语言把类型放在后面?。
golang引入var
关键字,类型信息放在变量名之后。
```go
var n int // 定义一个int变量
var f float32
var str string // 定义一个string变量
var arr [10]int // 数组
var m map[int]int // map
var p *int // pointer
var n int = 10 //定义并初始化
var n = 10
n := 10 // 效果样,可以自动推到n类型
n = 100 // 赋值
n2 := n // 定义并初始化
// ……
由上面示例可以看出,golang语句不需要分号作结束符,而且定义一个变量是被初始化的一般默认值是`0`,而指针是`nil`,`string`是`""`。
package main
import "fmt"
func main() {
var n int
fmt.Println("int: ", n)
var f float32
fmt.Println("float: ", f)
var str string
fmt.Println("string: ", str)
var arr [10]int
fmt.Printf("array: ")
for i := 0; i < len(arr); i++ {
fmt.Printf("%d ", arr[i])
}
fmt.Println()
var p int
fmt.Println("int: ", p)
}
/
output:
int: 0
float: 0
string:
array: 0 0 0 0 0 0 0 0 0 0
int:
*/
```
类型(type)
golang中内置基础类型
- boolean
- int8、byte、int16、int、uint、uintptr
- float32、float64
- complex64、complex128
- string
- rune
- error
复合类型
- 数组(array)
- 字典(map)
- 切片(slice)
- 结构体(struct)
- 通道(chan)
- 接口(interface)
- 指针(pointer)
- 引用(reference)
流程控制(flow control)
- 条件语句
if else - 选择语句
switch case select - 循环语句
for range - 跳转语句
goto
函数(function) && 包(package)
- 函数定义
```go
func func_name() {
}
```
- 函数调用
- 不定参数
- 多返回值
- 匿名函数&&闭包
- 包管理
面向对象
- 方法(method)
- 匿名字段
- 接口(interface)