这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
一、本堂课重点内容:
- 开发环境配置
- 基础语法(上)
二、详细知识点介绍:
- 开发环境配置
- 安装Golang
可以在Golang官网下载Golang,若无法访问可以尝试访问Golang中国镜像下载。
若访问GitHub困难,可以访问goproxy.cn 按照网站内提示进行配置。
其中PowerShell方式因未知原因无法生效,第二种方式可以正常生效。
2. 配置集成开发环境
(1)使用VS Code
微软官方教程
(2)使用GoLand
- 基础语法(上)
- hello world
package main
import (
"fmt"
)
func main() {
fmt.Println("hello world")
}
其中package main代表这个文件是main包的一部分;
import "fmt"代表导入标准库中的fmt包,用于向屏幕输入输出字符串,注意在导入多个包时的括号为圆括号()而非C++常用的{};
func main(){}为main函数,其中调用了fmt.Println()输出hello world。
在终端中使用go run main.go运行程序,使用go build main.go将程序编译为可执行文件。
编译完成后使用./main.go即可运行。
- 变量和常量
变量声明使用var关键字或:=关键字。
var identifier type
var identifier = value
var identifier type = value
var identifier1,identifier2 type = value1 , value2
identifier := value
intVal := 1相等于
var intVal int
intVal =1
常见的type有:bool、int、string、float32、float64等。
字符串之间可直接使用+进行拼接。
常量声明将var改为const即可。
- if else语句
if 布尔表达式{
/*需要执行的语句*/
}
if 布尔表达式{
/*需要执行的语句*/
} else {
/*需要执行的语句*/
}
if 布尔表达式{
/*需要执行的语句*/
} else if 布尔表达式{
/*需要执行的语句*/
} else {
/*需要执行的语句*/
}
注意布尔表达式左右没有(),if、else中的语句必须在{}中。
- 循环语句
只能使用for关键词。
和C语言的for一样:
for init; condition; post { }
和C语言的while一样:
for condition { }
和C语言的for(;;)一样:
for { }
init: 一般为赋值表达式,给控制变量赋初值;
condition: 关系表达式或逻辑表达式,循环控制条件;
post: 一般为赋值表达式,给控制变量增量或减量。
for语句执行过程如下:
1、先对表达式 1 赋初值;
2、判别赋值表达式init是否满足给定条件,若其值为真,满足循环条件,则执行循环体内语句,然后执行post,进入第二次循环,再判别condition;否则判断condition的值为假,不满足条件,就终止for循环,执行循环体外语句。
5. switch语句
switch var1 {
case val1:
...
case val2:
...
default:
...
}
switch默认情况下case最后自带break语句,匹配成功后就不会执行其他case,如果我们需要执行后面的case,可以使用fallthrough。
6. 数组
数组声明:
var variable_name [SIZE] variable_type
var a[10] float32
数组初始化:
var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
在声明数组的同时快速初始化数组:
balance := [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
若数组长度不确定,可用...代替数组的长度,编译器会根据元素个数自行推断数组的长度:
var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
或
balance := [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
如果设置了数组的长度,我们还可以通过指定下标来初始化元素:
// 将索引为 1 和 3 的元素初始化
balance := [5]float32{1:2.0,3:7.0}
初始化数组中{}中的元素个数不能大于[]中的数字。
数组元素可以通过索引(位置)来读取(或者修改),索引从 0 开始,第一个元素索引为 0,第二个索引为 1,以此类推。
7. 切片
Go语言切片是对数组的抽象。
Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go 中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。
声明一个未指定大小的数组来定义切片:
var identifier []type
使用make()函数来创建切片:
var slice1 []type = make([]type, len)
或
slice1 := make([]type, len)
也可以指定容量,其中capacity为可选参数。
make([]T, length, capacity)
这里len是数组的长度并且也是切片的初始长度。
可以使用append()函数向切片中添加元素。
s=append(s,"d")
s=append(s,"e","f")
注意添加元素后需赋值回原切片。
可以使用copy()拷贝切片数据。
copy(c,s)
切片截取:
numbers := []int{0,1,2,3,4,5,6,7,8}
numbers//原始切片
numbers[1:4]//从索引1(包含)到索引4(不包含)
numbers[:3]//索引3(不包含)之前的所有元素 **默认下限为0**
numbers[4:]//索引4(包含)之后的所有元素 **默认上限为len(s)**
一个切片在未初始化之前为空切片(nil),长度为0。
len()方法可以获取切片的长度;
cap()方法可以测量切片最长可以达到多少。
三、引用参考: