知识点
1.Hello World
package main
import (
"fmt"
)
func main() {
fmt.Println("hello world")
}
在终端用go run main.go 运行,可以看到hello world的输出。
go run 命令执行两项操作。 它编译应用,并在编译成功后执行应用。
2.变量
- go是强类型语言,每一个变量都有自己的变量类型。
- 大部分运算符的使用和优先级都和c类似。
- 可以通过
var 变量 = 值来声明变量。 - 也可以通过
变量 := 值来声明变量。 - 变量声明时会自动推导变量类型,如有需要也可以显示写出变量类型。
- 变量名必须以字母或下划线开头,后面可以跟任意数量的字母、数字或下划线。
- 如果声明了变量但未使用,Go 会抛出错误
3.if else
if 7%2 == 0 {
fmt.Println("7 is even")
} else {
fmt.Println("7 is odd")
}
if else写法也和c语言类似。 不同之处在于:
- if后的判断不需要括号,如果写了编辑器也会去掉。
- if后执行的语句必须放在大括号中。
4.循环
go语言中的循环只有for循环,没有while和do while循环。
- for后面什么都不写代表一个死循环。
- 可以使用经典的c循环,其中任意一段都可以省略。
- 和if else一样,条件不需要加括号
- 循环中,可以使用break跳出或者使用continue继续循环。
5.switch
go的switch语句在每一个case运行结束后不需要break就可以直接退出。 go语言的switch可以使用任意的变量类型,可以不加任何变量在case中写条件分支来代替if else语句。
6.数组
声明数组,必须定义其元素的数据类型以及该数组可容纳的元素数目。
如果你不知道你将需要多少个位置,但知道数据元素集,那么还有一种声明和初始化数组的方法是使用省略号 (...):
q := [...]int{1, 2, 3}
- 实际开发中我们很少直接使用数组,使用更多的是下面要介绍的切片
7.切片slice
slice由三个组件组合
- 指向基础数组中第一个可访问元素的指针
- 切片的长度
- 切片的容量
可以运用s[i:p]切片。
可以用append来追加元素,容量不够时会自动扩容。
8.map
是一个哈希表。
可以使用make()来创建map。
go语言的map是无序的,并不会按照插入顺序或是字典顺序遍历。
9.结构体
要声明结构,需要使用 struct 关键字,还需要新数据类型具有的字段及其类型的列表。
type People struct {
Age int
FirstName string
LastName string
}
然后就可以用var jack Pelple来声明一个结构体变量。
访问字段使用.来访问,例如
jack.Age = 21
fmt.Println(jack.age)
10.函数
使用func关键字来定义函数。
go与很多其他语言不同的是go的变量类型是后置的。
支持返回多个值,实际业务中几乎所有函数都返回两个值,第一个是真正的返回结果,第二个是错误信息。_ 变量是忽略返回值的惯用方法。
11.指针
go中的指针支持的操作有限,主要用途是对传入参数进行修改。 可以用&运算符获取一个变量的指针
个人思考
因为在此之前没有接触过go语言,所以这次上课学习还是有些偏快,下课后我也去看了一些文章文档,对go语言有了初步的认识。
学习建议
可以去看一下go语言相关的文档,然后自己动手跟着写一些代码,会对语法有更深的理解。