本文档参考golang官方文档以及一些教程书籍,若文档有错误,欢迎issue 🤗
- https://go.dev/doc/tutorial/
- 参考书籍《Go语言开发实战》
C语言
2012年3月28日,Go发布第一个正式的稳定版本。
2. Go语言的特性自由高校
- 编译效率优于 java C++
- 运行效率接近 C
- 开发效率接近 PHP
- Go语言支持所有编程范式:过程式编程,面向对象编程,面向接口编程,函数式编程
强大的标准库
- 标准库涵盖 网络 系统 加密编码 图形。
- 网络和系统的库非常实用,几乎不需要依赖第三方库
部署方便
- Go语言不使用虚拟机, Go语言的代码可以直接输出为 目标平台的二进制可执行文件。
- Go语言拥有自己的链接器,不依赖任何系统提供的编译器和链接器。
- 编译出来的二进制可执行文件几乎可以运行在任何平台上
原生支持并发
- Go语言的并发基于 Go routine
- Go routine 类似于线程,但是并非线程。是Go面向线程的轻量级方法。
- 创建 Go routine的成本很低,只需要几千个字节的额外内存。
- Go routine 之间可以通过channel实现通信,基于channel的并发方法可以最大限度地使用CPU资源。
稳定性强
- Go有编译检查,严格的编码规范,强稳定性。
- Go 提供了软件生命周期(开发,测试,部署,维护)的各个环节工具。go tool、 go fmt, go test。
垃圾回收
-
Go语言内置runtime来自动进行管理
🐛目前来说,GC并不完美,但是足以应付开发者遇到的大多数情况,Go语言允许开发者对词项工作进行优化。
- Go语言可以代替C 或者 C++做一些系统编程,如:日志处理,数据打包,虚拟机处理,文件系统。
- 网络编程方面,包括Web应用,API应用,下载应用。
- 知名开源项目:分布式系统中的Etcd, google的Groupcache数据库组件,云平台中的Docker和Kubernets,区块链中的Ethereum和Hyperledger.
Go语言的结构组成, 以下面的结构为例:
package main // 定义了包名
import "fmt" //导入依赖包, fmt包实现了格式话输入输出
func main(){ // 程序入口
fmt.printIn("Hello")
}
main()
⚠️需要注意的点:
main()main()main()
5. Go的标识符在Go语言中,换行代表一个语句结束,Go语言不需要像java一样以分号结尾。
如果多个语句写在同一行,这些语句必须使用分号隔开,实际开发中不鼓励这样做
标识符号分为:
- 预定义标识符,系统已经定义好的一些系统实体名称,比如 nil代表空
- 自定义标识符,指用户给变量,类型,函数等程序实体起名字
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qtjXbjuO-1665143573703)(…/.image/image-20220925184820689.png)]
int16
标识符可见性规则:Go语言中,使用大小写来决定标识符是否可以被外部包所调用。
- 如果标识符以一个大写字母开头,那么这个标识符代表的对象对外部包是可见的。
- 如果标识符以小写字母开头,则对外部包是不可见的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xy4MvDbc-1665143573704)(…/.image/image-20220925185224349.png)]
6. 补充GoLand快捷键
| 快捷键 | 说明 |
|---|---|
| Ctrl + J | 快速提示 |
| Ctrl + Shift + ↑ ↓ | 上下移动行的内容 |
| Alt + ← → | 文件编辑窗口切换 |
| Alt + ↑ ↓ | 光标在相邻函数跳转 |
| Ctrl + D | 向下复制行内容 |
| Ctrl + Y | 删除当前行 |
| Ctrl + Alt + L | 格式化代码 |
Go环境配置的相关变量
- GOROOT: Go的安装路径
- GOPATH: Go的工程路径, 工程目录 用来存放开发者的代码,该环境变量被指定之后,编译源代码所生成的文件都会放到此目录下。GOPATH主要有三个目录:
- bin: 存放可执行文件
- pkg: 存放编译好的库文件
- src: 存放go的源代码。
go env