这是我参与「第五届青训营」伴学笔记创作活动的第1天
一、本堂课重点内容
- go的安装、基础语法
- 案例实战:猜谜游戏,在线词典,SOCKS5代理
二、详细知识点介绍
1 go简介
- go语言是Google开发的开源编程语言,诞生于2006年1月2日下午15点4分5秒,于2009年11月开源,2012年发布go稳定版。Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持并发。
- go语言具有高性能、高并发,语法精炼,快速编译,跨平台,垃圾回收等特点
- 字节早期使用的是python,由于遇到了性能上的问题,转而使用go语言
2 go基础
2.1 开发环境
- 安装go:到go的官网下载安装包
- 配置系统环境(我使用的是windows)
- GOPATH,存放go项目的目录(由于gomod的出现已经很少使用),GOPATH下有三个子目录pkg,src,bin
- GOROOT,go的安装根目录
- path,将go中bin的全路径加入windows环境变量path中
- 编辑器:vscode、goLand
2.2 基础语法
- 变量
- 与java语言不同,go语言可以自动判定类型
- 变量的生成方式主要有两种
- 例1:var a = 1
- 例2: a := 1 (这种用法只能在函数内部使用,要注意)
- if else
- go中的if省略括号更简洁
- 同时由于go没有三目运算符"a > b ? a : b",这里要用if...else替代
- 循环
- go中只有for一个循环语句
for a := 0; a < 10; a++ {}
for a < b {}
- switch
- Golang switch 分支表达式可以是任意类型,不限于常量。可省略 break,默认自动终止。
- 数组
- 在go中数组的传递为值传递,如果要在不同函数中修改同一个数组,要使用指针作为形参
- 切片
- 切片是数组的一个引用,因此切片是引用类型。但自身是结构体,值拷贝传递。
- 切片的长度可以改变,因此,切片是一个可变的数组。
- 切片中没有直接删除的函数,要使用拼接巧妙删除
- map
- map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用
- 函数
- go中的函数可以返回多个参数
- 支持命名返回参数
- 支持匿名函数和闭包
- 结构体
- 结构体是值类型
- 结构体有自己的方法
- 结构体指针访问结构体的属性和方法与使用结构体变量相同
三、实践练习例子:猜谜游戏
四、课后个人总结
今天主要是学了go的基本语法,由于内容较多,还需要时间消化,在第二部分猜谜游戏,在线词典,SOCKS5代理这些案例中,有非常多值得学习的地方,例如每个函数调用之后都要对err进行处理,给出详细的err解释以便于在后期出错时,及时排查。