C++选手快速上手Go(2) | 青训营笔记

78 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第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)