这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
0 环境配置
0.1 文件下载
访问 Downloads - The Go Programming Language 或者 Downloads - The Go Programming Language (google.cn) 下载对应平台的安装文件
0.2 Windows
默认直接安装
0.3 Linux
解压下载文件
tar -zxvf https://dl.google.com/go/go1.19.5.linux-amd64.tar.gz -C /usr/local # 解压文件
编辑 /etc/profile 文件
vim /etc/profile #编辑配置文件
添加:
#go envrionment
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
重新加载
source /etc/profile
0.4 配置代理
打开你的终端并执行
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
1. Hello Go!
1.1 Hello World!
package main
import "fmt"
func main() {
fmt.Println("Hello, World")
}
2. 变量
2.1 变量声明
var identifier type // 声明单个变量
var identifier1, identifier2 type // 声明多个变量
var ( //
identifier1 type
identifier2 type
)
2.2 变量的初始化
var i int = 10
var i = 10 // 缩写
i := 10 // 海象运算符
注1:一些未初始化的值类型变量,Go 通常会自动赋值默认值, 例如:
var i int // i == 0
var s string // s == ""
var b bool // b == false
注2:变量声明后未使用,编译器会报错
3. 语句
3.1 if
if 布尔表达式 {
/* 在布尔表达式为 true 时执行 */
} else {
/* 在布尔表达式为 false 时执行 */
}
例如:
package main
import "fmt"
func main() {
/* 局部变量定义 */
var a int = 100;
/* 判断布尔表达式 */
if a < 20 {
/* 如果条件为 true 则执行以下语句 */
fmt.Printf("a 小于 20\n" );
} else if a > 80 {
/* 如果条件为 false 则执行以下语句 */
fmt.Printf("a 大于 80\n" );
} else {
/* 如果条件为 false 则执行以下语句 */
fmt.Printf("a 大于 20 小于 80\n" );
}
fmt.Printf("a 的值为 : %d\n", a);
}
3.2 for
for init; condition; post { } //c、c++: for(init; condition; post)
for condition { } // c、c++: for(; condition; )
for { } // c、c++: for(;;)
// python: for i in iterator
// c、c++: for(auto i : iterator)
for index, value := range iterator { }
例如:
package main
import "fmt"
func main() {
sum := 0
for i := 0; i <= 10; i++ {
sum += i
}
fmt.Println(sum)
sum = 0
for sum <= 10 {
sum += 1 // sum++
}
fmt.Println(sum)
sum = 0
for {
if sum <= 10 {
continue
} else {
break
}
sum++
}
fmt.Println(sum)
s := "abcde"
for _, c := range s {
fmt.Println(c)
}
}
4. 函数
4.1 函数声明
func function_name([parameter list]) (return_types) {
code
}
函数定义解析:
- func:函数由 func 开始声明
- function_name:函数名称,参数列表和返回值类型构成了函数签名。
- parameter list:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。
- return_types:返回类型,函数返回一列值。return_types 是该列值的数据类型。有些功能不需要返回值,这种情况下 return_types 不是必须的。
- code:函数定义的代码集合。
例如:
func max(num1, num2 int) int { // 单个返回值
var result int
if (num1 > num2) {
result = num1
} else {
result = num2
}
return result
}
func swap(x, y string) (string, string) { // 多个返回值
return y, x
}
4.2 lambda
f := fanc(a, b int) int {
return a + b
}
``