这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
此笔记的主要内容如下
- Go语言的背景介绍
- Go语言的快速入门
- Go语言的项目实战
基础语法
Hello World
package main
import (
"fmt"
)
func main() {
fmt.Println("hello world")
}
第一行 package main 表示这个文件属于main包的一部分,main包也就是程序的入口包,所以这个文件就是程序的入口文件。
第三行开始导入了标准库中的fmt包,格式化字符串。
第七行开始是main函数
变量
Go语言是一个强类型语言,每一个变量都有变量类型。
常见的变量类型有:字符串、整型int、布尔型、浮点型float、
两种变量声明方法:
// 第一种 var
var a = "initial" // 会自动推导变量a的类型
var b, c int = 1, 2 //也可以显式给出变量类型
// 第二种 :=
g := a + "foo"
if else
if 7%3 == 1 {
expression 1
} else if 7%3 == 2 {
expression 2
} else {
expression 3
}
Go的if-else写法和C、C++、Java很类似,但不同点是,if条件不加括号
循环
Go中没有while循环,没有do-while循环,只有for循环
// 死循环: for后不加条件
for {
}
// “while循环”
for i <= 3 {
}
switch
Go中switch看起来和C、C++比较相似,但是Go中switch后变量名不加括号。
C\C++中每个case中如果不加break,会默认继续执行下一个case;但在Go中,是不会继续执行下一个case的。
数组
[]int
切片
切片不同于数组,是一个可变长度的数组,可以任意时刻去更改长度
用make创建一个切片 s := make([]string, 3)
切片可以用append去追加元素 s = append(s, "d")
可以用copy去拷贝切片
c := make([]string, 4)
copy(c, s)
map
make创建 m := make(map[string]int) 创建时需要两个类型,中括号中 string 是key的类型,中括号外int是value的类型
delete删除k-v对 delete(m, key)
range
对于数组会返回两个值 i, num := range nums,第一个 i 是索引,第二个num是对应位置的值
对于map k, v := range m,第一个返回值k是key,第二个返回值v是value
函数
Go中变量类型是后置的
func 函数名(形参1名 形参1类型[, 形参2名 形参2类型, ...]) [返回值名 返回值类型] {
}
指针
*int
结构体
type 结构体名 struct {
字段1名 字段1类型
...
}
声明 a := 结构体名{字段1名:赋值1[, ...]}
调用 a.字段名
结构体方法
在Go中可以为结构体定义一些结构体方法
func (结构体变量名 结构体名) 结构体方法名(形参 形参类型[, ...]) [返回值 返回值类型] {
}