Go_base

Posted by Zhenda on Wed, Sep 25, 2024
Total Views:

资料

一个Go项目中只能有一个 main 包和一个 main() 函数

你会直接编辑 go.mod(虽然通常通过 Go 命令来做),但永远不应该手动编辑 go.sum 用于管理项目的依赖关系。它们共同保证了项目的构建过程的可靠性和可重复性

go 版本切换

  • gvm
  • asdf

命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 下载依赖
go mod init xxx
# 更新依赖
go get -u
go get .
# 更新go.mod文件
go mod tidy
# 查看依赖
go list -m all

go run .
# 打包main包
go build
go test xxx
# 使用 air 进行热重载
air

包管理

1
go get -u xxx

数据结构

变量

短赋值语句 := 可在隐式确定类型的 var 声明中使用, 不能在函数外使用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
/*
这是一个多行注释
可以用于注释多行内容
*/

// 单行注释

var i int
var f float64 = 3.14
name := "Alice" // 简短变量声明

类型转换

1
2
var a int = 10
var b float64 = float64(a)

数组

1
2
var arr [5]int = [5]int{1, 2, 3, 4, 5}
arr[2] = 10

slice

1
2
var s []int = []int{1, 2, 3, 4}
s = append(s, 5)

map

1
2
3
m := make(map[string]int)
m["age"] = 30
delete(m, "age")

pointer

1
2
3
var x int = 10
var p *int = &x
fmt.Println(*p) // 输出 10

结构体

1
2
3
4
type Person struct {
    Name string
    Age  int
}

控制逻辑

for

1
2
3
4
5
6
7
for i := 0; i < 5; i++ {
    fmt.Println(i)
}

for index, value := range arr {
    fmt.Println(index, value)
}

if

1
2
3
4
5
if x > 10 {
    fmt.Println("x is greater than 10")
} else {
    fmt.Println("x is less than or equal to 10")
}

函数

1
2
3
func greet(name string) {
    fmt.Printf("Hello, %s!\n", name)
}

interface

1
2
3
4
type Animal interface {
    move()
    eat()
}

并发

并发模型基于 goroutine 和 channel