这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记
第一节:Go语言上手-基础语言(下)
语法不同点
接笔记1——Range部分
Slice
切片:go语言中的切片是一个变长数组,其底层是一个数组,切片是对底层数组的封装,包含三个信息:底层数组的指针,切片长度和切片容量。
给切片增加元素通过append来实现;检查切片是否为空,请用len(s) == 0,不应使用s == nil来判断
值为nil的切片表示没有底层数组,其size和cap都为0,所以用len(s) == 0来判断
切片的赋值拷贝
切片拷贝前后两个变量共享底层数组,对一个切片的修改会影响另一个切片的内容,这点需要特别注意
map
golang的map完全无序
函数
golang中函数特殊的点在于,它可以有多个返回值
C++中成员函数的实现在go语言中采用如下方式:
tpye classTest struct {
a int64
}
func (c *classTest)classPrint {
fmt.Println(c.a)
}
错误处理
Golang的错误处理是一个非常独特的点,Go官方建议显式的通过函数返回错误,并对错误进行处理,如果没有错误,则错误对应返回值为nil
输入/输出处理
go语言针对不同的输入输出,有许多的包可以进行处理
字符串
在标准的strings包中,有许多函数可以对已有字符串进行处理
Golang的输出支持格式化输出,而其中的“ %v ” 可以用合适的类型打印任意变量,便于输出
时间
Golang的time包可用于时间处理
字符串数字转换
strconv可以协助用户将变量在字符串与数字类型之间来回切换
JSON
Golang中可以利用json包,对公开变量进行json序列化与反序列化(marshal和unmarshal)