这是我参与「第五届青训营」伴学笔记创作活动的第 1 天
一、本堂课重点内容
- Go 语言学习背景介绍
- Go 语言基础语言详细讲解
- 开发环境
- 基础语法
- 标准库
- Go 语言实战
- 项目一:猜谜游戏
- 项目二:命令行词典
- 项目三:SOCKS5 代理
二、详细知识点介绍
什么是Go语言
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
Go开发环境配置
下载地址
- Go官网下载地址:golang.org/dl/
- Go官方镜像站(推荐):golang.google.cn/dl/
Proxy代理
Go1.14版本之后,都推荐使用go mod模式来管理依赖环境了,也不再强制我们把代码必须写在GOPATH下面的src目录了,你可以在你电脑的任意位置编写go代码。(网上有些教程适用于1.11版本之前。)
默认GoPROXY配置是:GOPROXY=https://proxy.golang.org,direct,由于国内访问不到https://proxy.golang.org,所以我们需要换一个PROXY,这里推荐使用https://goproxy.io或https://goproxy.cn。
可以执行下面的命令修改GOPROXY:
go env -w GOPROXY=https://goproxy.cn,direct
基础语法
Hello Word!
package main
import "fmt"
func main() {
fmt.Println("Hello Word!")
}
变量
var声明语句可以创建一个特定类型的变量,然后给变量附加一个名字,并且设置变量的初始值。变量声明的一般语法如下:
var 变量名字 类型 = 表达式
变量名字 := 表达式
其中“类型”或“= 表达式”两个部分可以省略其中的一个。如果省略的是类型信息,那么将根据初始化表达式来推导变量的类型信息。如果初始化表达式被省略,那么将用零值初始化该变量。 数值类型变量对应的零值是0,布尔类型变量对应的零值是false,字符串类型对应的零值是空字符串,接口或引用类型(包括slice、指针、map、chan和函数)变量对应的零值是nil。数组或结构体等聚合类型对应的零值是每个元素或字段都是对应该类型的零值
切片
make([]T, len, cap) | var s []int
- cap 可以省略, 如果 cap 省略,则和 len 的值相同
- len 表示保存的元素个数,cap 表示容量
知识点
- 切片本身不是数组,它指向顶层数组
- 作为变长数组的替代方案,可以关联底层数组的局部或者全部
- slice 是引用类型
- 如果多个 slice 指向相同的底层数组,其中一个的值改变会影响全部
- slice 的容量为其指向的底层数组的长度减去切片的起始索引
array 与 slice 区别
- array 类型的值长度是固定的,slice 类型的值是可变长的
- array 在函数中传参时,array 传递的是副本,slice 传递的是引用 (map 也是引用传递)
字符串格式化
三、实践练习例子——猜谜游戏
代码
演示结果
四、课后个人总结:
- 仍需要自己额外补充学习知识
- Go的语法有点像python和javascipt的结合,指针参考了c语言
五、引用参考:
- 环境配置参考如下博客:www.liwenzhou.com/posts/Go/in…