2.1 什么是程序
why is Go语言?
Go语言 是区块链最主流的编程语言,
同时也是当前最具发展潜力的语言。
Go语言是Google公司创造的语言,也是Google主推的语言。
国外如Google、AWS、Cloudflare、CoreOS等,国内如七牛,阿里,小米,京东等都已经开始大规模使用Golang开发其云计算相关产品。
Go语言诞生的小故事
Go语言的核心开发团队
Ken Thompson(肯·汤普森)。1983年图灵奖(Turing Award)和1998年美国国家技术奖得主。他与Dennis Ritchie是Unix的原创者。Thompson也发明了后来衍生出C语言的B程序语言,同时也是C语言的主要发明人。
RobPike(罗布·派克):曾是贝尔实验室的Unix团队,和Plan9操作系统计划的成员。他与Thompson共事多年,并共创出广泛使用的UTF-8字元编码。
Robert Griesemer:曾协助制作Java的HotSpot编译器,和Chrome浏览器的JavaScript引擎V8
Google为什么要创造Go语言
1.计算机硬件技术更新频繁,性能提升很快,目前主流的编程语言发展明显落后于硬件,不能合理使用多核多CPU的优势提升软件系统性能
2.软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简介高效的编程语言。【现有编程语言:1.风格不统一2.计算能力不够3.处理大并发不够友好】
3.企业运行维护很多c、c++的项目,c、c++程序运行速度虽然很快,但是编译速度很慢。同时还存在内存泄漏的一系列的困扰要解决。
2.2Go语言发展简史
2007年,谷歌工程师Rob Pike,Ken Thompson和Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。
2009年11月10日。Google Docs将Go语言以开放源代码的方式向全球发布。
2015年8月19日,Go1.5版发布,本次更新中移除了 “最后残余的C代码”
2017年2月17日,Go语言Go1.8版发布。
2017年8月24日,Go语言Go1.9版发布。
2018年2月16日,Go语言Go1.10版发布。
2.3 Golang的语言特点
简介
Go语言保证了既能达到静态编译语言的安全和性能,又达到了动态语言开发维护的高效率.使用一个表达式来形容Go语言:Go = C+Python,说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。
1.从C语言中继承了很多概念,包括表达式语法,控制结构,基础数据类型,调用数据类型,动用参数传值,指针等,也保留了和C语言一样的编译执行方式及弱化的指针。
举一个案例(体验):
//go 语言的指针使用特点(体验)
func testPu(num *int){
*num = 20
}
2.引入包的概念,用于组织程序结构,Go语言的一个文件都要归于一个包,而不能单独存在
package main // 一个go文件需要在一个包
import "fmt"
func sayOk(){
// 输出一句话
fmt.Println('ok')
}
- 垃圾回收机制,内存自动回收,不需要开发人员管理【C容易出现内存泄漏】
4.天然并发【重要特点】
a.从语言层面支持并发,实现简单
b.goroutine,轻量级线程,可实现大并发处理,高效利用多核
c. 基于CPS并发模型(Communicating Sequenlal Processess) 实现
d.吸收了管道通信机制,形成Go语言特有的管道channel通过管道channel,可以实现不同的goroute之间的相互通信。
// 写一个函数,实现同时返回 和,差
// go函数支持返回多个值
func getSumAndSub(n1 int,n2 int)(int,int){
sum := n1 + n2 // go语言后不要加;
sub := n1 - n2
return sum,sub
}
e.新的创新:比如切片slice、延时执行defer等
2.4 Golang 开发工具的介绍
工具选择(vscode)
1.下载地址
https://code.visualstudio.com/download
2.window安装
简单下一步下一步,略
VSCode的安装和使用
在d盘创建gocode
3.如何在Liunx中安装vscode
略(一般不在liunx上来开发)
2.5 Windows下搭建Go开发环境-安装和配置SDK
介绍SDK
1.SDK的全称(Software Development Kit 软件开发工具包)
2.SDK是提供给开发人员使用的,其中包含了对开发语言的工具包
SDK下载:
1.Go语言的官网为:golang.org,因为各种原因,可能无法访问
2.SDK下载地址:Golang中国 https://www.golangtc.com/download
Windows下安装SDK:
1.Windows下SDK的个个版本说明:
Windows下:根据自己系统是32位还是64位进行下载:
32位系统:go1.9.2.windows-386.zip
64位系统:go1.9.2windows-amd64.zip
2.请注意,安装路径不要有中文或者特殊符号或符号如空格等
3.SDK安装目录建议,Windows放在d盘
4.安装时,基本上是傻瓜式安装,解压就可以用
Windows下配置Golang环境变量:
为什么配置环境变量
1.看一个现象
2.原因分析
错误原因:当执行的程序在当前目录下如果不存在,Windows系统会在系统中已有的一个名为path的环境变量指定的目录下查找,如果仍旧没找到,会出现以上错误提示,所以进入到go安装路径\bin目录下,执行go,会看到go参数提示信息
在Go开发中,需要配置那些环境变量
a. GOROOT
b.Path
c.GOPATH
安装完之后,检查一下是否安装成功,重新打开cmd命令窗口。如下图
Liunx下搭建Go开发环境-安装和配置SDK
1.Liunx下安装SDK:
Liunx下:根据系统是32位和64位(uname -a查看命令)
2.请注意:环境路径不要有中文或者特殊符号如空格等
3.SDK安装目录建议:liunx放在/opt目录下
4.安装时,解压即可,我们使用的是tar.gz
Linux下配置Golang环境变量
1.在/etc/profile文件夹下添加
export GOROOT=/opt/go
export PATH=$PATH:$GOROOT$/bin
export GOPATH=$HOME/goprojects/
2.提示:修改/ets/profile文件,需要root权限或者sudo名字
2.7 Mac下搭建Go开发环境-安装和配置SDK
1.Mac下SDK的各个版本说明:
Mac OS 下,只有64位的软件安装包
Mac OS 系统的安装包:go1.9.2.darwin-amd64.tar.gz
2.请注意:安装路径不要有中文或者特殊符号如空格等
3.sdk安装目录建议:Mac一般放在用户目录下go_devigo下
4.安装时,解压即可
Mac下配置Golang环境变量:
步骤1:使用root用户,修改/etc/profile增加环境变量的配置
export GOROOT=$HOME/go_dev/go
export PATH=$PATH/bin
export GOPATH=$HOME/goproject
步骤2:配置成功后,需要注销。再次启动。执行go version查看是否配置成功
2.8Go语言快速开发入门
需求
要求开发一个hello.go程序,可以输出“hello,world”
1.目录结构
2.代码如下:
对上图说明
a.go文件的后缀是.go
b.package.main
表示该hello.go 文件所在的包是main,在go中,每个文件都归属于一个包
c.import “fmt” 表示引入一个包,包名fmt,引入改包后就可以使用fmt包中的函数,比如:fmt.Prinln
d.func main(){
} func 是一个关键字,表示一个函数。main是函数名。是一个主函数,即我们程序的入口。
e. fmt.Println(“hello”) 表示使用fmt这个包的函数输出“hello”
- 通过go build命令对该go文件进行编译,生成.exe文件
4.运行hello.exe文件即可
5.注意:通过go run命令可以直接运行 hello.go 程序
Liunx下如何开发Go程序说明:liunx下开发go和Windows开发基本是一样的,只是在运行可执行的程序时以./文件名方式
演示:
编译和运行
// 编译
go build hello.go
// 运行
./hello
也可以直接用go run hello.go方式运行
Mac下如何开发Go程序
说明:在Mac下开发go程序和Windows基本一样
演示一下:如何在Mac下开发一个Go程序
编译再运行,或者go run来运行
编译和运行说明
1.有了go源文件,通过编译器选择将其编译成机器可以识别的二进制码文件。
2.在改源文件目录下,通过go build对hello.go 文件进行编译。可以指定生成的可执行文件,在Windows下必须是.exe后缀
修改编译文件名指令
go build -a myhello.exe hello.go
3.如果没有错误,没有任何提示,会在当前目录下出现一个可执行文件(Windows下是.exe, Liunx下是一个可执行文件),该文件是二进制码文件,也是可以执行的程序
4.如果程序有错误,编译时,会在错误的那行报错。有助于程序员排错
运行
1.直接运行生成的可执行Go程序,比如hello.exe
2.通过运行工具go run对源码文件进行运行
Go开发注意事项
1.Go源文件以“go”为扩展名
2.Go应用程序的执行入口是main()函数
3.Go语言严格区分大小写
4.Go方法由一条条语句构成。每个语句后不需要分号(Go语言会在每行后自动加分号),这个也体现出Golang的简介性。
5.Go编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多行写在同一个,否则会报错
6.go语言定义的变量或者import的包如果没有用到,代码不能编译通过。
7.大括号都是成对出现的,缺一不可
2.9 Go语言的转意字符
常用的转义字符有
- \t: 相当于一个tab空格键
- \n:换行符
- \:一个\
- ":一个"
- \r: 一个回车
案例:
package main
import "fmt" // 格式化,输入,输出的函数
func main(){
// 演示转义符 \t
fmt.Println("tom\tjack")
fmt.Println("hello\nworld")
fmt.Println("C:\\Users\\Administrator.S4RSCM1IE7T6BE7\\Desktop\\Project\\public")
fmt.Println("tom说\"i love you\"")
// \r 回车,从当前的最前面的开始输出,覆盖掉以前的内容
fmt.Println("天龙八部雪山飞狐\r张飞厉害")
}
作业
要求用一句话输出一下语句,达到下图效果
代码如下:
package main
import "fmt"
func main(){
fmt.Println("姓名\t年龄\t籍贯\t地址\njohn\t16\t河北\t北京")
}
2.11 注释
行注释
// 注释内容
块注释
/*
注释内容
*/
2.12 规范的代码风格
正确的注释和代码风格
1.Go官方推荐使用行注释来注释整个方法和语句
正确的缩进和空白
1.使用一次tab操作,实现缩进默认整体向右边移动,快捷键shfit+tab向左移动
2.或者使用 gofmt来进行格式化
gofmt -w xxx.go
3.运算符两边各加一个空格。
var num = 1 + 1
4.代码风格
正确
package main
import "fmt"
func main(){
fmt.PrintLn("hello,world!") // shift+alt+向下箭头 复制
}
错误
package main
import "fmt"
func main(){
fmt.PrintLn("hello,world!") // shift+alt+向下箭头 复制
}
5.一行最长不要超过80个字符,超过要换行展示
fmt.PrintLn("hello,world!hello,world!hello,world!hello,world!hello,world!hello",
",world!hello,world!hello,world!hello,world!",
"hello,world!hello,world!hello,world!")
Golang官方编辑指南
Golang官方网站 https://golang.org
Golang官方标准库API文档,https://golang.org/pkg 可以查看所有包下的函数和使用
Golang 中文网 在线标准库文档:https://studygolang.com/pkgdoc
2.15 Dos的常用指令
dos的基本介绍
Dos:Disk Operating System 磁盘操作系统,简单说一下windows的目录结构
- 查看当前目录dir
- 切换到F盘符cd /d f:
- 切换到上级目录cd …
- 切换到顶级目录cd \
目录操作
1.创建目录ok200 **md ok200 **
创建ok300和ok400 md ok300 ok400
2.删除目录
rd /q/s ok200 q表示不需要询问s代表包含子文件
创建文件
echo helloworld > abc.txt
echo helloworld > d:/go/gocode/abc.txt
复制和移动
复制 copy abc.txt d:\test //使用原来文件名
copy abc.txt d:\test\a.txt // 使用新文件名
移动
move abc.txt d:\test
删除
del xxx.txt // 删除所有.txt (*.txt)
清屏
cls
退出
exit
课后习题
1.写一个输出 hello,golang的程序
package main
import "fmt"
func main(){
fmt.Println("hello,Golang")
}
2.将个人信息 姓名 性别 表格输出出来
package main
import "fmt"
func main(){
fmt.Println("姓名\t性别\n张三\tman")
}
感谢大家观看,我们下次见