文章目录

  • Golang的诞生
  • Golang的核心开发团队
  • Golang里程碑
  • Golang应用领域
  • 使用Golang开发的项目
  • 环境搭建
    • Golang SDK下载及安装
    • Golang IDE下载及安装
      • Goland下载及安装
      • 首次使用Goland
      • 通过Goland创建一个HelloGolang项目
Golang的诞生
  • 计算机硬件技术更新频繁,性能提高很快。目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能。
  • 软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言。
  • 企业运行维护很多c/c++的项目,C/C++程序运行速度虽然很快(因为采用静态编译),但是编译速度却很慢,同时还存在内存泄露的一系列困扰需要解决。
Golang的核心开发团队
  • Ken Thompson(肯·汤普逊):1983年图灵奖、1998年美国国家技术奖得主,他与Dennis
  • Ritchie是Unix系统的原创者。Thompson也发明了C语言、B语言,同时也是C语言的主要发明人。
  • Rob Pike(罗布·派克): 加拿大人,曾是贝尔实验室的Unix团队和Plan 9操作计划的成员。他与Thompson公事多年,并共创出广泛使用的UTF-8字元编码。(ps:Go语言的图标-gopher 囊地鼠,是Rob Pike老婆制作的) image
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版本发布
Golang应用领域
  • 区块链应用
    • 区块链技术,简称BT(Blockchain technology),也被称为分布式账本技术,是一种互联网数据库技术,其特点是去中心化,公开透明,让每个人均可参与数据库记录。
  • 后台服务器应用
    • 美团后台流量支撑程序 支撑主站后台流量(排序,推荐,搜索等),提供负载均衡,cache,容错,按条件分流,统计运行指标(qps,latency)等功能
    • 京东消息推送云服务/京东分布式文件系统 应用范围:后台所有服务全部用Go实现
  • 云计算/云服务后台应用
    • 盛大云CDN(内容分发网络)应用范围:CDN的调度系统、分发系统、监控系统、短域名服务,CDN内部开放平台、运营报表系统以及其他一些小工具等
使用Golang开发的项目
  • Docker
    • Docker 是一种操作系统层面的虚拟化技术,可以在操作系统和应用程序之间进行隔离,也可以称之为容器。Docker 可以在一台物理服务器上快速运行一个或多个实例。例如,启动一个 CentOS 操作系统,并在其内部命令行执行指令后结束,整个过程就像自己在操作系统一样高效。
  • Go语言
    • Go语言自己的早期源码使用C语言和汇编语言写成。从 Go 1.5 版本后,完全使用Go语言自身进行编写。Go语言的源码对了解Go语言的底层调度有极大的参考意义,建议希望对Go语言有深入了解的读者读一读。
  • Kubernetes
    • Google 公司开发的构建于 Docker 之上的容器调度服务,用户可以通过 Kubernetes 集群进行云端容器集群管理。系统会自动选取合适的工作节点来执行具体的容器集群调度处理工作。其核心概念是 Container Pod(容器仓)。
  • etcd
    • 一款分布式、可靠的 KV 存储系统,可以快速进行云配置。由 CoreOS 开发并维护键值存储系统,它使用Go语言编写,并通过 Raft 一致性算法处理日志复制以保证强一致性。
环境搭建

Golang SDK下载及安装

Next我接受许可协议中的条款NextNextFinishWin+rcmdgo versionGOPATHgo version

Golang IDE下载及安装

常见的Golang IDE有

  • Goland
    • Goland,商业公司jetbrains 近两年推出的 Go 集成开发环境,相信很多程序都用过他们家的IDE,比如Java的 Intellj IDEA、PHP的PHPStorm、Python的PyCharm、C++的CLion、前端的WebStorm等。使用JetBrains的IDE,我们可以享受到它优秀的开箱即用的体验和 jetbrains 积累十几年的插件体系。
  • VS Code
    • 由微软开发的一款功能强大的现代化轻量级代码编辑器IDE,免费开源。通过它强大的插件扩展能力,VS Code几乎支持主流语言的项目开发。毫无例外,GO也是其中之一。
  • Vim GO
    • 细究起来,vim应该是一款文本编辑器,但它却拥有了很多不该属于文本编辑器的能力,比如单词补全、ctags标签跳转、窗口分隔、崩溃文件恢复、文件diff、400多种文本高亮等。最重要的一点是,vim有一套自己的脚本语言,这为它通过插件扩展自己的能力提供了可能。

Goland下载及安装

DownloadNextNextNextFinish

首次使用Goland

Evaluate for freeContinue

当然你也可以点击此处,注册学生版、开源组织、大学教育机构版 image

通过Goland创建一个HelloGolang项目

一般情况下,我们会创建一个工程文件,工程文件中一般包含

  • src
    • 存放源代码
  • bin
    • 存放编译好的文件
  • pkg
    • Golang依赖库文件

image

New Project
HelloHelloGolang.go

写下如下代码

package main
import "fmt"
func main() {
	fmt.Println("hello golang")
}
Run

  1. Go.mod是Golang1.11版本新引入的官方包管理工具用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。 Go.mod其实就是一个Modules,关于Modules的官方定义为: Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性。Modules替换旧的基于GOPATH的方法,来指定使用哪些源文件。 Modules和传统的GOPATH不同,不需要包含例如src,bin这样的子目录,一个源代码目录甚至是空目录都可以作为Modules,只要其中包含有go.mod文件。 ↩︎