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语言注释:
- 行注释
基本语法:
// 注释内容
举例:
- 块注释
基本语法:
/*
注释内容
*/
举例:
- 使用细节
① 对于行注释和块注释,被注释的文字,不会被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中的大括号成对出现。
本文名称:(一)Golang的概述
文章出自:
http://cdweb.net/article/jcopid.html