今天开始发布关于go语言入门到实战内容,各位小伙伴准备好。
go介绍
Go语言(或 Golang)起源于 2007 年,并在 2009 年正式对外发布。是由 Google 公司开发的一种静态强类型、编译型、并发型、并具有垃圾回收功能的编程语言。
Go 是非常年轻的一门语言,它的主要目标是 兼具 Python PHP等动态语言的开发速度和 C/C++ 等编译型语言的性能与安全性
Go语言被称为 “C 类似语言” ,“21 世纪的C语言”。
go创始人
Rob Pike:曾是贝尔实验室Unix开发团队成员,Plan9操作系统开发的主要*,Inferno操作系统开发的主要*。
ken tomption:图灵奖得主,C语言前身B语言的作者,Unix的发明人之一, 操作系统Plan 9的主要作者。 共同开发了UTF-8。
Robert:曾为谷歌的V8 JavaScript引擎和Chubby开发代码。
Golang发展历程
2007年,谷歌工程师Ken Thompson、Rob Pike、Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。
2009.11.10 ,Google将Go语言以开放源代码的形式向全球发布。
2015年8月19日 ,Go1.5版本发布,本次更新中移除了“最后残余的C代码”,请内存管理方面权威专家Rick Hudson对GC进行重新设计
2017年2月16日 , Go1.8版本发布
2017年8月24日 , Go1.9版本发布
2018年2月16日 , Go1.10版本发布
2018年8月24日 , Go1.11版本发布
2019年2月25日 , Go1.12版本发布
2019年9月03日 , Go1.13版本发布
2020年2月25日 , Go1.14版本发布
2020年8月11日 , Go1.15版本发布
2021年2月16日 , Go1.16版本发布
2021年8月16日 , Go1.17版本发布
每半年发布一个版本
学习Go能做什么?
区块链开发
服务器端云计算开发
软件开发
go项目
腾讯
蓝鲸平台,容器开发有关
百度
BFE项目,负责前端流量的接入
京东
京东云消息推送系统、云存储,以及京东商城等都有使用Go做开发
小米
小米互娱、小米商城、小米视频、小米生态链等团队都在使用Golang。
Docker k8s
GO语言特性
1)可直接编译成机器码,部署简单,一个文件搞定。
2)既有静态编译语言安全性,又有动态语言开发维护的高效率
3)语言层面支持并发,天生的支持并发。可以充分的利用多核。
4)内置runtime,支持垃圾回收。
5)简单易学,Go关键字是25个,但是表达能力很强大,几乎支持大多数你在其他语言见过的特性:继承、重载、对象等。
6)丰富的标准库,Go目前已经内置了大量的库,特别是网络库非常强大。
7)内置强大的工具,Go语言里面内置了很多工具链。
8)跨平台编译,那么就可以做到window系统编译linux的应用。
9)内嵌C支持,Go里面也可以直接包含C代码,利用现有的丰富的C库。
编译型语言 解释型语言
编译型语言: C语言、C++、Golang 不能跨平台
解释型语言:Python、JavaScript、PHP 跨平台
Java 既是编译型语言 也是解释型语言 跨平台
Go语言支持交叉编译 可以跨平台
为并发而生的GO
现代计算机都拥有多个核,但是大部分编程语言都没有有效的工具让程序可以轻易利用这些资源。编程时需要写大量的线程同步代码来利用多个核,很容易导致错误。
Go语言正是在多核和网络化的时代背景下诞生的原生支持并发的编程语言。Go语言从底层原生支持并发,无须第三方库,开发人员可以很轻松地在编写程序时决定怎么使用 CPU 资源。
Go语言的并发是基于 goroutine 的,goroutine 类似于线程,但并非线程。可以将 goroutine 理解为一种虚拟线程。Go语言运行时会参与调度 goroutine,并将 goroutine 合理地分配到每个 CPU 中,最大限度地使用 CPU 性能。
GO性能
GO学习资料
https://golang.org 官网地址
The Go Programming Language 国内官网地址
Go 编程语言 中文官方网站
https://github.com/hackstoic/golang-open-source-projects 优秀的开源项目
首页 - Go语言中文网 - Golang中文社区
Goproxy.cn
安装
linux
解压
tar -xf go1.17.2.linux-amd64.tar.gz -C /usr/local/
添加环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/go/bin
source /etc/profile
go version
注意:
GOROOT 的值应该为Go语言的当前安装目录:export GOROOT=/usr/local/go
PATH Go 程序的可执行文件,export PATH=$PATH:$GOROOT/bin
如果 在/usr/local下 可以不设置 GOROOT
win
目前最新版本 go1.17.2.windows-amd64
下载 完成后 直接下一步即可
目录介绍
api 存放Go API检查器的辅助文件
bin Go语言相关工具的可执行文件
doc 存放Go语言几乎全部的HTML格式的官方文档和说明
misc 存放各类编辑器或IDE(集成开发环境)软件的插件
pkg 用于在构建安装后,保存Go语言标准库的所有归档文件
src 存放所有标准库、Go语言工具,以及相关底层库(C语言实现)的源码
test 存放测试Go语言自身代码的文件
Goland安装
Goland 下载 goland-2021.2.4
GoLand by JetBrains: More than just a Go IDE
Go 语言的的包依赖管理
GOPATH
bin:存放编译后生成的二进制可执行文件pkg:存放编译后生成的 .a 文件src:存放项目的源代码,可以是你自己写的代码,也可以是你 go get 下载的包将你的包或者别人的包全部放在 $GOPATH/src 目录下进行管理的方式,我们称之为 GOPATH 模式。
go vendor 模式的过渡
为了解决 GOPATH 方案下不同项目下无法使用多个版本库的问题,Go v1.5 开始支持 vendor 。
go mod
go modules 在 v1.11 版本正式推出,在最新发布的 v1.14 版本中,官方正式发话,称其已经足够成熟,可以应用于生产上。
Go编译的命令
go build 命令可以将Go语言程序代码编译成二进制的可执行文件,但是需要我们手动运行该二进制文件;
go run 命令则更加方便,它会在编译后直接运行Go语言程序,编译过程中会产生一个临时文件,但不会生成可执行文件,这个特点很适合用来调试程序。
欢迎加入go语言学习交流QQ群:109640867
文档对应视频:go语言入门第一季