go

go


第六单元(Go语言初识)

<h1>第六单元</h1> <h2>单元目标</h2> <p>1、了解Go语言的发展历史 2、了解Go语言的特性 3、掌握安装和配置Golang 4、学会搭建集成开发环境Goland 5、Go语言的结构组成及编码规范</p> <h2>1.1、Go语言的发展历史</h2> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=298c2ebe34170c4ff7b9dd24bd100d71&amp;file=file.png" alt="" /></p> <h4></h4> <hr /> <p>Ken Thompson C语言Unix和Plan9的创始人之一,20世纪70年代 设计并实现了Unix操作系统,还和Rob Pike 设计了UTF-8编码。</p> <p>Rob Pike 不但设计了UTF-8编码,还开发了分布式多用户操作系统Plan9 Inferno操作系统和Limbo编程语言。</p> <p>Robert Griesemer 就职于Google,负责Chrome浏览器中Google V8引擎的代码。</p> <p>他们于2007年开始设计Go语言,于2009年正式对外发布,被称作21世纪的C语言!</p> <hr /> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=ae91abf8357a8684bc0b04d5b4c92dc8&amp;file=file.png" alt="" /></p> <p>(从左到右分别为:Robert Griesemer, Rob Pike, Ken Thompson)</p> <h2>1.2 为什么要创建Go语言?</h2> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=6cf9f1da062c1b117c3bbd0d95740168&amp;file=file.png" alt="" /></p> <ul> <li>快速 天下武功唯快不破</li> <li>安全 作为强类型静态语言,并自带垃圾回收机制所以也具有安全性。</li> <li>代码简洁 Go语言不仅在编译上快速,代码的简洁明了,易于阅读</li> <li>已编译 不需要虚拟机支持,可直接编译成机器代码。编译后的文件也不需要依赖其他包文件</li> <li>跨平台 Go语言拥有的交叉编译,可以轻松编译到指定的平台上运行:例如OS X ,Linux,Windows,Arm 或者其他平台。</li> <li>垃圾回收 自带垃圾回收机制</li> <li>内置包 Go语言拥有几乎所有你能用到的标准库。例如http网络协议包,json解析包,time时间包等等。这种碎片化的东西在一个系统中占用大部分时间</li> <li> <p>工具 Go语言出色的内置命令工具,自动设置代码格式,检查代码存在的问题,go fmt 命令每次保存后自动格式化代码。</p> </li> <li>并发 并发在Go语言中属于一大亮点,并发的最小单元是协程,是一个微线程却有别于线程。一台电脑可以轻松开启成千上万个协程,在这个大数据的时代,能够处理大流量的数据能力的语言,并且能够简单快速开发的语言,非Go语言莫属了。</li> </ul> <h2>1.3 哪些公司都在使用Go语言?</h2> <p>Go社区中至少有100万名Go程序员。越来越多的公司都拥抱Go语言,最著名的使用Go语言的公司Google,Docker,Dropbox,Heroku,Uber等。国内的比如滴滴,腾讯,阿里,京东商城,爱奇艺,小米,360,美团,驴妈妈旅游网,斗鱼直播,探探 等等 都在使用Go语言。包括哔哩哔哩的后台也从java转向了Go 可见Go语言的受欢迎程度。</p> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=e443eb7d1aa50fdcb79f9ad312e42b18&amp;file=file.png" alt="" /></p> <h2>1.3 掌握安装和配置Golang</h2> <blockquote> <p>广义的Golang就是指Go语言,后缀lang代表language; 狭义上的Golang特指Go语言的开发环境。</p> <p>Mac、Windows和Linux三个平台上都支持Golang。读者可以从Golang官网下载相应平台的二进制文件。该网站在国内不容易访问,也可以访问Go语言中文网进行安装软件的下载</p> <p>在go的官方网址上下载go最新版本golang.google.cn/。或者 Go 的中文网上下载 studygolang.com/dl</p> </blockquote> <pre><code>windows环境配置 Windows环境下(以Window7为例),下载格式为MSI的安装程序。 双击启动安装并遵循提示。在位置C:\Go中安装Golang, 并且添加目录C:\Go\bin到path环境变量。如果安装文件是MSI格式, Go语言的环境变量会自动设置完成。</code></pre> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=b12fdf2e261c8d0a1770ae085b7c8696&amp;file=file.png" alt="" /></p> <ul> <li>需要把GOPATH中的可执行目录也配置到环境变量中, 否则自行下载的第三方Go语言工具将无法使用。</li> <li>工作目录用来存放开发者的代码,对应Golang里的GOPATH这个环境变量。该环境变量被指定之后,编译源代码所生成的文件都会放到此目录下。</li> <li>GOPATH之下主要包含三个目录: bin、pkg、src。</li> <li>bin目录主要存放可执行文件;</li> <li>pkg目录存放编译好的库文件, 主要为*.a文件; </li> <li>src目录下主要存放go的源文件。</li> <li>使用快捷键win+R键,输入cmd,打开命令行提示符,在命令行中输入:</li> <li>go env # 查看得到go的配置信息,不同环境下显示会略有差异</li> </ul> <h1>1.4 安装goland 编辑器</h1> <p>打开GoLand官方下载界面,如图所示。单击网页中【DOWNLOAD]】按钮,该网站自动识别计算机系统,并下载最新的编辑器,下载完成后,在本地执行解压,安装。</p> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=a17e7d28fa5a040c28655072448d2c37&amp;file=file.png" alt="" /></p> <h1>1.5 我的第一个Go程序</h1> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=50c1254632057a081fa8ab75c0691b9d&amp;file=file.png" alt="" /></p> <h1>1.6 Go语言基本结构组成</h1> <p>硅谷创业之父保罗·格雷厄姆在《黑客与画家》中提到,软件工程师与画家、建筑师、作家一样,也是创造者。一个好的程序,不仅仅是技术的产物,更是技术与艺术相结合的产物。每个程序都有其自身的结构,而结构又深深的影响着程序的效率,毋庸置疑,程序的结构是功能与效率的承担者。下面通过HelloWorld程序了解Go语言的基本结构</p> <hr /> <p>第1行package main 定义了包名。必须在源文件中非注释的第1行指明这个文件属于哪个包,如:package main package main表示一个可独立执行的程序,每个 Go 应用程序都需要包含一个名为 main 的包。并且在该包中包含一个叫main()的函数(该函数是Go可执行程序的执行起点,既不能带参数,也不能定义返回值)。</p> <hr /> <p>第3行 import &quot;fmt&quot; ,import语句用于导入该程序所依赖的包。由于本例程序用到了Println()函数,所以需要导入该函数所属的fmt包。fmt 包实现了格式化 IO(输入/输出)。</p> <hr /> <p>第7行 func main() 是程序入口。所有Go函数以关键字func开头,每一个可执行程序所必须包含main 函数,通常是程序启动后第一个执行的函数,如果有 init() 函数则会先执行init()函数。</p> <hr /> <p>第8行 fmt.Println(...) ,将字符串输出到控制台,并在最后自动增加换行字符 \n。 使用 fmt.Print(&quot;ok,let's go&quot;) 也会得到相同的结果。 除此之外,还有以下几点值得注意: (1)只有 package 名称为 main 的包可以包含 main 函数。 (2)一个可执行程序有且仅有一个 main 包。 (3)通过 import 关键字来导入其它非 main 包。 (4)可以通过 import 关键字单个导入,也可以同时导入多个</p>

页面列表

ITEM_HTML