后端基础| 青训营笔记

90 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天。

首先便是Go语言的一些基础介绍,包括有Go语言的特点,然后通过Go的一个实例——启动web服务来说明Go代码的简洁强大。然后也介绍了目前Go的使用现状以及由于Go原生库的强大,字节从python到逐步转到Go的故事。
接着便是进入正题:开发环境的构建,基础语法的讲解以及标准库的使用
安装完golang之后这里有两种idea可以供我们选择:vscodegoland,因为以前使用过vscode进行静态网页的编写,所以本着省事的想法选择了vscode,但是在进行代码编写的时候遇到了一个问题:它在从键盘输入的时候会报错。

然后就进行问题的查找解决,在根据网上的教程配置了几个launch.json无效之后便含泪转goland。也算是曲线解决问题了。
以及在查看源码的时候发现可以进行线上的编程,虽说编译速度相比起线下编译会慢一些,但是聊胜于无。
后面便是一些基础语法的介绍,首先就是经典的hello world,语法上还是挺接近c的,条件上去掉了括号,然后变量和常量的声明方式需要记一下,循环方面只有一个for循环语句,switch不用加break,数组的声明方式感觉跟java很像。印象最深的应该是切片,他是一个可变长的数组,可以通过append来进行追加元素,如果容量不够的话,它会进行扩容并返回新的slice。
然后是map,其实我觉得它就是封装了一个可变类型的存储了关键字和值的结构体,它里面是完全无序的,遍历的时候不会按照字母顺序,也不会按照插入顺序输出,而是随机顺序。range方面则是可以用来快速遍历,有索引。函数,结构体,指针,结构体方法,可以看成是java和c的结合。错误处理就是通过error这个接口类型来生成错误信息,然后用errors.News可以返回一个错误信息,Go的错误处理方式可以很清晰地得知是哪个函数返回了错误。
字符串的操作有计数(count)查找位置(index)连接多个字符串(join)。以及字符串格式化,不同于c的各种各样的格式,只需要用%v就能轻松打印任意类型的变量。对于一个已有的结构体,我们可以什么都不做,只要保证每个字段的第一个字母是大写,也就是是公开字段。那么这个结构体就能用JSON.marshaler去序列化,变成一个JSON的字符串。序列化之后的字符串也能够用JSON.Unmarshal去反序列化到一个空的变量里面。这样默认序列化出来的字符串的话,它的风格是大写字母开头,而不是下划线。我们可以在后面用json tag等语法来去修改输出JSON结果里面的字段名。
字符串和数字之间的转换。在go语言当中,关于字符串和数字类型之间的转换都在strconv这个包下,这个包是string convert这两个单词的缩写。可以用strconv.ParseInt()或者strconv.ParseFloat()来解析一个字符串。可以用strconv.Atoi("AAA")把一个十进制字符串转成数字。可以用strconv.Itoa()把数字转成字符串。如果输入不合法,那么这些函数都会返回error。在go里面,我们能够用os.Args来得到程序执行的时候的指定的命令行参数。比如我们编译的一一个二进制文件,command。后面接 abcd来启动,输出就是os.Args会是一个长度为 5的slice ,第一个成员代表二进制自身的名字。我们可以用os.Getenv("PATH")来读取环境变量。
后面就是三个实例:猜谜游戏,在线词典和SOCKS5代理的项目实战,其中猜谜游戏感觉还是蛮容易上手的,难度也是最低的。在线词典方面,我当时找不到相对应的包,目前是脑子会了,但是手还在探索的阶段。课程相对来说比较快吧,讲的挺详细的,我觉得我还需要有一定的时间进行消化消化。