Google创造Golang的原因:

  • 计算机硬件技术更新频繁,性能提高很快。目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能。
  • 软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言。【现有的编程语言;风格不统一;计算能力不够;处理大并发不够好】
  • 企业运行维护很多c/c++的项目,c/c++程序运行速度虽然很快,但是编译速度却很慢,同时还存在“内存泄漏”的一系列的困扰需要解决。

Golang的发展历程:

  • 2007年,谷歌工程师Rob Pike,Ken Thomson和Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。
  • 2009年11月10日,Google将Go语言以开放源代码的方式向全球发布。
  • 2015年8月19日,Go1.5版发布,本次更新中移除了“最后残余的C代码”。
  • 2017年2月17日,Go语言Go1.8版发布。
  • 2017年8月24日,Go语言Go1.9版发布。1.9.2版本
  • 2018年2月16日,Go语言Go1.10版发布。

Golang语言的特点:

Go语言保证了既能达到静态编译语言的安全和性能,又能达到动态语言开发维护的高效率;相当于Go=C+Python,说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。

  • 从语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等等,也保留了和C语言一样的编译执行方式及弱化的指针。 举一个案例:
//go 语言的指针的使用特点:
		func testPtr(num *int) {
		    *num=20
		}
  • 引入包的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在。
package main //一个go文件需要在一个包;
import “fmt”
func sayok() {
	   //输出一句话
      fmt.Println("ok")
}
  • 垃圾回收机制,内存自动回收,不需要开发人员管理。
  • 天然支持大并发。 1)从语言层面支持并发,实现简单; 2)goroutine,轻量级线程,可实现大并发处理,高效利用多核; 3)基于CPS并发模型(Communicating Sequential Processes)实现; 4)吸收了管道通讯机制,形成Go语言特有的管道channel,通过管道可以实现不同的goroute之间的相互通信; 5)函数可以返回多个值;举例:
//写一个函数,实现同时返回 和,差;
//go 函数支持返回多个值;
func getSumAndSub(n1 int,n2 int) (int,int) {
        sum := n1 + n2 //go 语言后面不要带分号;
        sub := n1 - n2
        return sum , sub
}

6)新的创新,比如切片 slice,延时执行 defer;

Golang的开发工具的介绍:

  • 工具介绍 1)visual studio code(vscode)Microsoft产品:一个运行于Mac OS X,Windows和Linux之上的,默认提供Go语言的语法高亮,安装Go语言插件,还可以智能提示,编译运行等功能; 2)Sublime Text,可以免费试用,默认也支持Go代码语法高亮,只是保存次数达到一定数量之后就会提示是否购买,点击取消继续使用,和正式注册版本没有任何区别; 3)Vim,Vim是从vi发展出来的一个文本编辑器,代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用; 4)Emacs,Emacs传说中的神器,它不仅仅是一个编辑器,因为功能强大,可称它为集成开发环境; 5)Eclipse IDE工具,开源免费,并提供GoEclipse插件; 6)LiteIDE, LiteIDE是一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),是国人开发的; 7)JetBrains公司的产品:PhpStrom、WebStrom和PyCharm等IDE工具,都需要安装Go插件;

工具选择:

  • 如何选择开发工具 先选择用visual studio code或者vim文本编辑器本,到对Go语言有一定了解后,再使用Eclipse等IDE开发工具。
  • 为什么要这样选择 1)更深刻的理解Go语言技术,培养代码感; 2)有利于公司面试,现在写代码;

VSCode的安装和使用:

到下载地址选择适合自己系统的VSCode安装软件: https://code.visualstudio.com/download 安装到D盘指定路径,安装即可使用。 在实际开发中,可以在windows开发好程序,然后部署到linux下。

下载SDK工具包:

  • 介绍SDK 1)SDK的全程(Software Development Kit 软件开发工具包); 2)SDK是提供给开发人员使用的,其中包含了对应开发语言的工具包;
  • 下载SDK工具包 Go语言的官网是:golang.org,但是访问很慢;这里选择中国的下载地址:Golang中国,https://golang.google.cn/ 我下载的是1.9.2版本的,选择windows的zip包,解压到指定路径即可使用。
  • windows下配置环境变量 1)配置环境变量介绍 根据windows系统在查找可执行程序的原理,可以将Go所在路径定义到环境变量中,让系统帮我们去找运行执行的程序,这样在任何目录下都可以执行go指令。 2)配置环境变量
GOROOT:指定SDK的安装路径D:\golang\go1.9.2.windows-amd64\go;
Path:添加SDK的/bin目录;%GOROOT%\bin;
GOPATH:工作目录,将来我们的go项目的工作路径D:\gocode;

3)打开DOS命令测试

C:\Users\Administrator>go version
go version go1.9.2 windows/amd64
  • linux下配置环境变量
vim /etc/profile
	export GOROOT=/opt/go
	export PATH=$PATH:$GOROOT/bin
	export GOPATH=$HOME/goproject
source /etc/profile

Go语言快速开发入门:

  • 需求 要求开发一个hello.go程序,可以输出“hello,world”
  • 步骤 对上图的说明: 1)go文件的后缀是 .go 2)package main 表示该hello.go文件所在的包是main,在go中,每个文件都必须归属于一个包。 3)import “fmt” 表示:引入一个包,包名为fmt,引入该包后,就可以使用fmt包的函数,比如:fmt.Println 打印 4)func main() { } func是一个关键字,表示一个函数。 main是函数名,是一个主函数,即我们程序的入口。 5)fmt.Println("hello,world") 表示调用fmt包的函数Println输出“hello,world”
  • 编译执行 1)先编译再执行(两步较快)
	D:\gocode>go run hello.go
	hello,world
	D:\gocode>hello.exe
	hello,world

2)编译执行(一步较慢)

	D:\gocode>hello.exe
	hello,world

3)两种执行流程的方式区别 ① 如果先编译生成了可执行文件,那么可以将该可执行文件拷贝到没有go开发环境的机器上,仍然可以执行; ② 如果是通过go run直接执行go源代码,那么如果要在另外一个机器上这么运行,也需要go开发环境,否则无法执行; ③ 在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件变大了很多。

  • Go程序开发的注意事项 1)Go源文件以“go”为扩展名; 2)Go应用程序的执行入口是main()函数,这个类似于其他编程语言(比如java/C) 3)Go语言严格区分大小写; 4)Go语言由一条条语句构成,每个语句后不需要分号(Go语言会在每行后自动加分号),这也体现出Golang的简洁性; 5)Go编译器是一行行进行编译的,因此我们要一行就写一条语句,不能把多条语句写在同一行,否则报错; 6)go语言定义的变量或者import的包如果没有使用到,代码不能编译通过; 7)大括号都是成对出现的,缺一不可。

Go语言的转义字符(escape char):

1)\t:表示一个制表符,通常使用它排版; 2)\n:换行符; 3)\:表示一个
4)":表示一个" 5)\r:表示一个回车

D:\gocode>go run test01.go
张飞厉害雪山飞狐

案例:

D:\gocode>go run test02.go
姓名    年龄    籍贯    住址
john    12       河北    北京

Golang语言注释:

  • 行注释 基本语法: // 注释内容 举例:
  • 块注释 基本语法:
	/*
	注释内容
	*/
举例:
![](https://s1.51cto.com/images/blog/201908/11/48bb5d457aca03730e290b19edfbbda5.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
  • 使用细节 ① 对于行注释和块注释,被注释的文字,不会被Go编译器执行; ② 块注释里面不允许有块注释嵌套。

规范的代码风格:

  • 正确的注释和注释风格 1)Go官方推荐使用行注释来注释整个方法和语句; 2)Go的源代码就是使用行注释的。
  • 正确的缩进和空白 1)使用tab键进行缩进;如果需要多行缩进,全选然后按shift+tab键向左移,然后按一次tab键实现缩进; 2)使用gofmt进行格式化:gofmt -w 将格式化后的内容写入到文件中。
  • 运算符两边习惯加一个空格 var num = 2 + 4 * 5
  • Go语言的代码风格 正确的写法:
func main() {
		fmt.Println("hello,world!")
}

错误的写法:

func main() 
{
		fmt.Println("hello,world!")
}
  • 一行最长不超过80个字符,超过的使用换行展示,保持格式优雅 运行输出还是一行:
package main
import "fmt"
func main() {
		//fmt.Println("hello,world!")
		fmt.Println("helloworldhelloworldhelloworldhellow",
		"orldhelloworldhelloworldhelloworldhelloworldhell",
		"oworldhelloworldhelloworldhelloworldhelloworldhe",
		"lloworldhelloworldhelloworldhelloworldhelloworldh",
		"elloworldhelloworldhelloworld")
}

运行输出以分割的样式展示:

package main
import "fmt"
func main() {
		//fmt.Println("hello,world!")
		fmt.Println("helloworldhelloworldhelloworldhellow\n",
		"orldhelloworldhelloworldhelloworldhelloworldhell\n",
		"oworldhelloworldhelloworldhelloworldhelloworldhe\n",
		"lloworldhelloworldhelloworldhelloworldhelloworldh\n",
		"elloworldhelloworldhelloworld")
}

Go语言管方指南:

  • Golang官网:(需要×××才能访问) https://golang.org
  • Golang中文官方指南 https://tour.go-zh.org/welcome/1
  • 解释术语:API API:Application Program Interface=应用程序编程接口; 就是我们Go语言中的各个包的各个函数。
  • Golang标准库API文档 1)API是Golang提供的基本编程接口; 2)Go语言提供了大量的标准库,因此google公司也为这些标准库提供了相应的API文档,用于告诉开发者如何使用这些标准库,以及标准库包含的方法; 3)Golang中文网在线标准库文档:https://studygolang.com/pkgdoc 4)Golang的包和源文件和函数的关系 包和源文件一一对应,源文件里包含函数源代码。

本章知识回顾:

  • Go语言的SDK是什么? SDK就是软件开发工具包;我们做开发,首先需要先安装并配置好SDK。
  • Golang环境变量配置及其作用? GOROOT:指定go sdk安装目录; Path:指定SDK\bin目录,go.exe、godoc.exe、gofmt.exe; GOPATH:就是Golang工作目录,我们所有项目的源码都在这个目录下。
  • Golang程序的编写、编译、运行步骤是什么?能否一步执行? 编写:就是写代码; 编译:go build 源码 ==》生成一个二进制的可执行文件; 运行:对可执行文件运行 xx.exe ./执行文件;go run 源码。
  • Golang程序编写的规则 1)go文件的后缀是 .go; 2)go程序区分大小写; 3)go的语句后,不需要带分号; 4)go定义的变量,或者import包,必须使用,如果没使用就会报错; 5)go中,不要把多条语句放在同一行,否则报错; 6)go中的大括号成对出现。