这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
1. Go 语言基础
Go语言是一个高性能、高并发,语法简单、学习曲线平缓的语言。其有着丰富的标准库,完善的工具链,遵循静态链接,快速编译,可跨平台以及具备垃圾回收等功能。
-
编写运行程序
1. go run XXX.go 2. go build XXX.go ; ./XXX -
变量
var a = "XXX" // 自动推导变量类型 var a int = 1 g := a + "XXXX" const s string = "constant" // 常量根据上下文给出类型 -
数组
var a [5]int var twoD [2][3]int b := [5]int{1, 2, 3, 4, 5} -
切片:
和python类似可利用冒号":"进行切片
s:= make([]string, 3) // 创建
s = append(s, "e", "f") //利用append进行添加
-
map: 遍历是完全无序的
m := make(map[string]int) // make(map[KEY]VALUE) m2 := map[string]int{"one": 1, "two": 2} delete(m, "one") // 遍历 for k, v := range m { fmt.Println(k, v) // b 8; a A } -
结构体
type user struct { name string password string } func (u user) checkPassword(password string) bool { return u.password == password } a.checkPassword("2048") -
循环
for n:=0; n <5;n++ { (break/continue) } -
if: 条件内没有括号,且加上大括号,执行不要写在同一行。
-
switch / case, switch后可跟任何结构或者不跟
-
函数func: 原生支持返回多个值
-
指针: 只针对对变量进行修改
func add2ptr(n *int) { *n += 2 } add2ptr(&n) -
错误处理:error / nil / errors.New( "XXX")
-
依赖管理
go mode init [moudule name] go mode build ./... //当前目录下的所有子文件中的go文件 go get go mode tidy
2. 课后题
-
- 修改猜谜游戏的最终代码,用fmt.scanf来简化
fmt.Scanf("%s", &name) fmt.Scanf("%d", &alphabet_count) fmt.Scanf("%g", &float_value) fmt.Scanf("%t", &bool_value) -
- 修改第二个例子命令行字典中的最终代码,增加另外一种翻译引擎。
-
- 增加效率