golang 学习笔记
时间: 2023-09-20 22:05:10 浏览: 192
golang的学习笔记
以下是 golang 学习笔记,希望对你有帮助:
### 1. 基本语法
- 包声明:每个 Go 程序都是由多个包组成,使用 `package` 声明包名。
- 引入包:使用 `import` 关键字引入需要的包。
- 函数:使用 `func` 关键字声明函数,函数可以有多个返回值。
- 变量:使用 `var` 关键字声明变量。
- 常量:使用 `const` 关键字声明常量。
- 控制语句:Go 语言支持条件语句和循环语句,例如 `if`、`switch`、`for` 等。
### 2. 数据类型
Go 语言支持以下数据类型:
- 布尔型:`bool`
- 数字类型:`int`、`int8`、`int16`、`int32`、`int64`、`uint`、`uint8`、`uint16`、`uint32`、`uint64`、`uintptr`、`float32`、`float64`、`complex64`、`complex128`
- 字符串类型:`string`
- 派生类型:`array`、`slice`、`map`、`struct`、`interface`、`channel`
### 3. 函数
Go 语言中的函数可以有多个返回值,可以使用命名返回值来使函数更加清晰易读。例如:
```go
func swap(x, y string) (string, string) {
return y, x
}
```
### 4. 数组和切片
Go 语言中的数组和切片都是支持多维的。数组和切片的区别在于数组长度是固定的,而切片长度可以动态变化。例如:
```go
// 声明数组
var a [5]int
// 声明切片
var s []int
s = append(s, 1, 2, 3)
```
### 5. 结构体
结构体是一种自定义的数据类型,可以包含多个不同类型的字段。例如:
```go
type person struct {
name string
age int
}
func main() {
p := person{"Bob", 20}
fmt.Println(p.name, p.age)
}
```
### 6. 接口
接口定义了一组方法的集合,只要某个类型实现了接口中定义的所有方法,就可以认为它实现了这个接口。例如:
```go
type Shape interface {
area() float64
}
type Circle struct {
x, y, r float64
}
func (c Circle) area() float64 {
return math.Pi * c.r * c.r
}
func main() {
var s Shape
s = Circle{x: 0, y: 0, r: 5}
fmt.Println(s.area())
}
```
### 7. 并发
Go 语言使用协程来实现并发,协程是一种轻量级的线程,可以在一个线程中同时执行多个协程。例如:
```go
func main() {
go say("world")
say("hello")
}
func say(s string) {
for i := 0; i < 5; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Println(s)
}
}
```
以上就是 golang 学习笔记的主要内容,希望对你有所帮助。
阅读全文