这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
学习了go的语言基础,因为之前接触过多种编程语言,主要关注go与java,C++,shell命令之间的异同,便于快速上手。主要内容如下
- Go语言特点
- Go语言应用
- Go语言语法基础
Go语言特点
- 标准化库即实现高性能、高并发。(意味着开发过程中,不用特别的考虑语言效率)
- 标准库丰富,不用求助第三方库。
- 工具链完善
- 静态链接(不需要另外的库和运行平台)和快速编译(1s增量编译,不同于C++和Java重新编译,类似于webstorm中对前端项目的处理)
- 跨平台,无需配置交叉编译(多平台处理,不需要考虑环境配置)
- 不需要考虑垃圾回收(类似Java,不用delete,但需要考虑的是,内存过程及触发机制)
Go语言应用
公司有字节,腾讯,美团,滴滴,百度,B站
主要领域有云计算和微服务
相比python性能要好,相比其他语言上手简单
Go语言语法基础
开发环境
安装golang(下载后根据教程,go version)
配置goproxy.cn可加快下载第三方包速度
IDE :vscode(安装go插件)/golang
在线编程环境,github账号 gitpod.io 进入仓库
结构与运行
使用package指定包名(类似java),main为入口。使用import{} 引入库, run 运行, build 构建二进制文件
变量声明
1、var name = value 自动推导变量类型,也可 var name (type) = value,字符串为内置类型,可直接用+拼接
2、name := (type)value
3、常量即把var改为const,const没有固定的类型,会根据上下文自动确定
流程控制
if else 没有if后的括号,后面必须用大括号
只有for循环,没有括号,其他相同
switch 除不加括号外,支持任意类型。若不写switch什么,可以把条件写在case里,代替if else。不用case里break,默认不往下继续执行。
数组
数组(不能更改长度,很少用)声明方式为var a [5]int
切片 s := make([]string, 3)
s = append(s,"d") 尾端追加,更改长度,自动扩容
copy(s1,s2), s2拷贝到s1
s[2:5]从索引2(第3个)到4,不包括5 支持s[:5]和s[2:],不支持负索引。
len(s)
good := []string{"g","o","o","d"}初始化声明
函数
原生支持返回多个值
通过指针,修改传入参数 (n *int)(&n),基础类型和结构体都如此
结构体函数,同样需要带指针才能对结构体修改
错误处理
通过函数返回多个值的方式,error类型
其他
字符串操作、格式化、json处理
时间处理
strconv字符串解析
进程信息