这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
课堂内容
走进GO语言基础语言
- Go的应用背景介绍
- 开发环境
- 基础语法
- 标准库
内容记录与心得
开发环境
- 我是在本地用VMware搭建了Ubuntu-20.04.5-desktop-amd64,在本地上用vscode远程连接虚拟机,配置go和git环境,拉取仓库内容到虚拟机内进行调试编译。
- 官方提供了云平台也可以进行开发
云平台链接:https://gitpodio/#github.com/wangkechun/go-by-example
短链接: hi-hi.cn/gitpod
基础语法
首先是经典 Hello world
变量声明:
- 一般情况下声命变量是:var 变量名 变量类型
- 若赋予初值:var 变量名 变量类型 = 值
- 也可以让go去推导 变量名 := 值
IF-else && For && Switch-case
- 前面两个和Cpp差不多,只不过去掉了括号
- Switch-case 值得注意的是后面跟的变量是可以任意类型的,而且执行完一个case就会结束这个Switch-case段,不会像Cpp那样继续执行下面的case
数组 切片 Map
- 数组的声明和变量声明差不多,在类型前面加上[X]表面大小即可:
var a [5][6]int或者a [5]int{1,2,3,4,5} - 切片是类似一个可变长的数组,还支持像python那样的切片操作,但是不支持负数索引:
定义:s := make([]string, 3)添加:s = append(s, "d")
切片操作:fmt.Println(s[2:5]) // [c d e] - Map 和C++的map差不多,都是使用键值对(key-value):
可以用切片声明:m := make(map[string]int)也可也用数组声明:m2 := map[string]int{"one": 1, "two": 2}
插入时直接赋值即可:m["one"] = 1
删除时使用delete即可:delete(m, "one")
函数 指针 结构体 结构体方法
- 函数和结构体与cpp类似,不过函数的返回类型放到了参数括号的后面 而且支持返回多个值,返回类型像参数一样用括号括起来并声明变量:
func exists(m map[string]string, k string) (v string, ok bool) - 指针在go中限制比较大,一般用于函数传参的引用传递,即在类型前加
*,调用函数的时候在变量名前加& - 结构体方法就是将调用结构体的函数中的结构体参数写到函数名称前面加上括号:
func (u user) checkPassword(password string) bool
错误处理
- 一般函数return会多带一个error类型来进行错误返回 方便进行处理
字符串 JSON 时间
- 字符串类似C++ 可以直接进行+=处理,同时有很多工具函数:
- JSON处理:
json.marshale 和 json.unmarshale进行序列化和反序列化 - 时间:
time.Now time.Date获取日期和设置日期 以及.UNIX获取时间戳
数字解析 进程信息
- 数字和字符串之间用
strconv.ParseFloat/Int和strconv.Atoi即可相互转换 - 进程信息通过调用
os的函数即可获得
个人总结
这是我的第N门语言学习了,入门语法还是很简单的,所以老师讲的信息密度也很大,从Go的身上能看到不少Java,C,C++,python的影子:简化了不少C语法、限制了指针、方便了错误处理等等,还需要更多实践来加强记忆.