将课程所学所想整理成笔记以便后期复习,第一讲 GO语言快速上手。 我对GO语言已经有了一些基础,环境配置、基本语法、包的管理、标准库的使用都有过练习,笔记只做查缺补漏使用。
本课程主要学习的是GO的后端开发,由于其简单易上手、天然支持高并发、性能好等优点比较适合现在的后端业务,并且有许多开源的框架支持,使得GO越来越受到互联网企业,尤其是内容生产厂商青睐。
开发环境可以使用VSCODE或者GOLAND,我选择VSCODE是因为其配置灵活、与gland相比没那么臃肿,并且本人任务学会自找麻烦去配置一些东西是基本素养。
基本的语法:变量、循环、switch、数组、切片等不再赘述,比较需要关注的点是切片是一个结构体,包括一个指针、表示目前元素个数的len、表示最大可容纳元素个数的cap。如果在进行append时元素容量不够,则会重新分配一块内存,这时应考虑效率问题,最好能够提前将最大容量分配到位,这个效率问题同样体现在map中。
使用range迭代器时,要注意其返回值是两个,index和value,如不需要可用_接受参数。
指针:slice作为参数传递,天然传递的是指针。其他参数如结构体、变量等作为指针传递,一可以对初始值进行修改,二可以避免参数过大产生的效率问题。
结构体:使用结构体应注意,同函数一样,如果想要开放内部变量,对函数名和结构体的属性进行首字母大写,否则无法暴露给外部使用。结构体可以使用tag来应对一些小写问题,如json:"小写xxx"。结构体可以拥有函数,或者叫方法,此时结构体可以理解成类。常见写法func(c *structName)funcName(args ..)(returnArgs..){} 传递指针可以对结构体本身进行修改。
字符串作为基本数据类型,可以使用+进行拼接,=进行比较,但是当需要提高代码效率时需要灵活应对,拼接操作尝试使用strings.builder 或者 bytes.builder。
json:json本身是[]uint8类型,使用json.marshal()来将结构体转为json格式,并且可以通过tag改变json中的名称。(转化玩的json是[]uint8类型,可以使用string()转化为字符串后打印输出)。
基础内容比较多,未完待续...