Go学习笔记(1)
Golang 的概述
Golang 的语言的特点
简介: Go 语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容 Go 语言:Go = C + Python , 说明 Go 语言既有 C 静态语言程序的运行速度,又能达到 Python 动态语言的快速开发。
- 从 C 语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等 等,也保留了和 C 语言一样的编译执行方式及弱化的指针
//举一个案例(体验):
//go 语言的指针的使用特点(体验)
func testPtr(num *int) {
*num = 20
}
- 引入包的概念,用于组织程序结构,Go 语言的一个文件都要归属于一个包,而不能单独存在。
-
垃圾回收机制,内存自动回收,不需开发人员管理
-
天然并发 (重要特点)
**(1) 从语言层面支持并发,实现简单 ** **(2) goroutine,轻量级线程,可实现大并发处理,高效利用多核。 ** (3) 基于 CPS 并发模型(Communicating Sequential Processes )实现
- 吸收了管道通信机制,形成 Go 语言特有的管道 channel 通过管道 channel , 可以实现不同的 goroute 之间的相互通信。
- 函数可以返回多个值。举例:
//写一个函数,实现同时返回 和,差
//go 函数支持返回多个值
func getSumAndSub(n1 int, n2 int) (int, int ) {
sum := n1 + n2 //go 语句后面不要带分号.
sub := n1 - n2
return sum , sub
}
- 新的创新:比如切片 slice、延时执行 defer
Golang 的开发工具的介绍
工具介绍
VSCode 的安装和使用
- 先到下载地址去选择适合自己系统的 VSCode 安装软件
https://code.visualstudio.com/download
- 演示如何在 windows 下安装 vscode 并使用
步骤 1: 把 vscode 安装文件准备好
步骤 2:双击安装文件,就可以一步一步安装,我个人的习惯是安装到 d:/programs 目录.
步骤 3: 简单的使用一下 vscode
在 d 盘创建了一个文件夹 gocode.
Windows 下搭建 Go 开发环境-安装和配置 SDK
介绍SDK
- SDK 的全称(Software Development Kit 软件开发工具包)
- SDK 是提供给开发人员使用的,其中包含了对应开发语言的工具包
下载 SDK 工具包
- Go 语言的官网为:golang.org , 因为各种原因,可能无法访问。
- SDK 下载地址:Golang 中国 https://www.golangtc.com/download
- 如何选择对应的 sdk 版本
windows 下安装 sdk
- Windows 下 SDK 的各个版本说明:
Windows 下:根据自己系统是 32 位还是 64 位进行下载:
32 位系统:go1.9.2.windows-386.zip 64 位系统:go1.9.2.windows-amd64.zip
- 请注意:安装路径不要有中文或者特殊符号如空格等
- SDK 安装目录建议:windows 一般我安装在 d:/programs
- 安装时,基本上是傻瓜式安装,解压就可以使用
- 安装看老师的演示:
- 解压后,我们会看到 d:/go 目录,这个是 sdk
windows 下配置 Golang 环境变量
为什么需要配置环境变量
配置环境变量介绍
根据 windows 系统在查找可执行程序的原理,可以将 Go 所在路径定义到环境变量中,让系统帮我们去找运行执行的程序,这样在任何目录下都可以执行 go 指令。
在 Go 开发中,需要配置哪些环境变量
如何配置
步骤 1:先打开环境变量配置的界面
步骤 2: 配置我们的环境变量
对上图的一个说明:
- Path 这个环境变量不需要在创建,因为系统本身就有,你后面增加即可
- 增加 Go 的 bin : ;%GOROOT%\bin
对上图的一个说明
-
GOPATH :就是你以后 go 项目存放的路径,即工作目录
-
GOPATH:是一个新建的环境变量
测试一下我们的环境变量是否配置 ok
注意:配置环境变量后,需要重新打开一次 dos 的终端,这样环境变量才会生效。
Go 语言快速开发入门
需求
要求开发一个 hello.go 程序,可以输出 "hello,world”
开发的步骤
- 开发这个程序/项目时,go 的目录结构怎么处理.
- 代码如下:
对上图的说明 (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”) 表示调用 fmt 包的函数 Println 输出 “hello,world”
- 通过 go build 命令对该 go 文件进行编译,生成 .exe 文件.
- 运行 hello.exe 文件即可
- 注意:通过 go run 命令可以直接运行 hello.go 程序 [类似执行一个脚本文件的形式]
linux 下如何开发 Go 程序
说明:linux 下开发 go 和 windows 开发基本是一样的。只是在运行可执行的程序时, 是以 ./文件名方式 演示: 在 linux 下开发 Go 程序。
编译和运行 hello.go
Golang 执行流程分析
如果是对源码编译后,再执行,Go 的执行流程如下图
如果我们是对源码直接 执行 go run 源码,Go 的执行流程如下图
两种执行流程的方式区别
- 如果我们先编译生成了可执行文件,那么我们可以将该可执行文件拷贝到没有 go 开发环境的机器上,仍然可以运行
- 如果我们是直接 go run go 源代码,那么如果要在另外一个机器上这么运行,也需要 go 开发环境,否则无法执行。
- 在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件变大了很多。
编译和运行说明
- 有了 go 源文件,通过编译器将其编译成机器可以识别的二进制码文件。
- 在该源文件目录下,通过 go build 对 hello.go 文件进行编译。可以指定生成的可执行文件名,在windows 下 必须是 .exe 后缀。
-
如果程序没有错误,没有任何提示,会在当前目录下会出现一个可执行文件(windows 下是.exe,Linux 下是一个可执行文件),该文件是二进制码文件,也是可以执行的程序。
-
如果程序有错误,编译时,会在错误的那行报错。有助于程序员调试错误.
- 运行有两种形式
Go 程序开发的注意事项
- Go 源文件以 "go" 为扩展名。
- Go 应用程序的执行入口是 main()函数。 这个是和其它编程语言(比如 java/c)
- Go 语言严格区分大小写。
- Go 方法由一条条语句构成,每个语句后不需要分号(Go 语言会在每行后自动加分号),这也体现出 Golang 的简洁性。
- Go 编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多条语句写在同一个,否则报错
- go 语言定义的变量或者 import 的包如果没有使用到,代码不能编译通过。
- 大括号都是成对出现的,缺一不可。
Go 语言的转义字符(escape char)
说明:常用的转义字符有如下:
- \t : 表示一个制表符,通常使用它可以排版。
- \n :换行符
- \ \:一个\
- \ " :一个"
- \r :一个回车 fmt.Println("天龙八部雪山飞狐\r 张飞");
- 案例截图
课堂练习
作业评讲:
package main
import "fmt"
func main() {
//要求:要求:请使用一句输出语句,达到输入如下图形的效果
fmt.Println("姓名\t 年龄\t 籍贯\t 地址\njohn\t20\t 河北\t 北京")
}
Golang 开发常见问题和解决方法
文件名或者路径错误
小结和提示
学习编程最容易犯的错是语法错误 。Go 要求你必须按照语法规则编写代码。如果你的程序违反了语法规则,例如:忘记了大括号、引号,或者拼错了单词,Go 编译器都会报语法错误,要求:尝试着去看懂编译器会报告的错误信息。
注释(comment)
介绍注释
用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性; 注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。
在 Golang 中注释有两种形式
- 行注释
基本语法
// 注释内容
举例
- 块注释(多行注释)
基本语法 /* 注释内容 */ 举例说明
使用细节
- 对于行注释和块注释,被注释的文字,不会被 Go 编译器执行。
- 块注释里面不允许有块注释嵌套 [注意一下]
规范的代码风格
正确的注释和注释风格:
- Go 官方推荐使用行注释来注释整个方法和语句。
- 带看 Go 源码
正确的缩进和空白
- 使用一次 tab 操作,实现缩进,默认整体向右边移动,时候用 shift+tab 整体向左移 看老师的演示:
- 或者使用 gofmt 来进行格式化 [演示]
- 运算符两边习惯性各加一个空格。比如:2 + 4 * 5
- Go 语言的代码风格.
package main
import "fmt"
func main() {
fmt.Println("hello,world!")
}
上面的写法是正确的.
package main
import "fmt"
func main()
{
fmt.Println("hello,world!")
上面的写法不是正确,Go 语言不允许这样编写。 【Go 语言不允许这样写,是错误的!】 Go 设计者思想: 一个问题尽量只有一个解决方法
- 一行最长不超过 80 个字符,超过的请使用换行展示,尽量保持格式优雅
举例说明
Golang 官方编程指南
说明: Golang 官方网站 https://golang.org
点击上图的 tour -> 选择 简体中文就可以进入中文版的 Go 编程指南 。
Golang 官方标准库 API 文档, https://golang.org/pkg 可以查看 Golang 所有包下的函数和使用
解释术语:API api : application program interface :应用程序编程接口。 就是我们 Go 的各个包的各个函数。
Golang 标准库 API 文档
- API (Application Programming Interface,应用程序编程接口)是 Golang 提供的基本编程接口。
- Go 语言提供了大量的标准库,因此 google 公司 也为这些标准库提供了相应的 API 文档,用于告诉开发者如何使用这些标准库,以及标准库包含的方法。
- Golang 中文网 在线标准库文档: https://studygolang.com/pkgdoc
- Golang 的包和源文件和函数的关系简图
- 有一个离线版的 Golang_Manual_By_AstaXie_20120522.chm
知识回顾
Go 语言的 SDK 是什么? SDK 就是软件开发工具包。我们做 Go 开发,首先需要先安装并配置好 sdk.
Golang 环境变量配置及其作用。 GOROOT: 指定 go sdk 安装目录。 Path: 指令 sdk\bin 目录:go.exe godoc.exe gofmt.exe GOPATH: 就是 golang 工作目录:我们的所有项目的源码都这个目录下。
Golang 程序的编写、编译、运行步骤是什么? 能否一步执行? 编写:就是写源码 编译:go build 源码 =》 生成一个二进制的可执行文件 运行:1. 对可执行文件运行 xx.exe ./可执行文件 2. go run 源码
Golang 程序编写的规则。
- go 文件的后缀 .go
- go 程序区分大小写
- go 的语句后,不需要带分号
- go 定义的变量,或者 import 包,必须使用,如果没有使用就会报错
- go 中,不要把多条语句放在同一行。否则报错
- go 中的大括号成对出现,而且风格
func main() { //语句 }
简述:在配置环境、编译、运行各个步骤中常见的错误 对初学者而言,最容易错的地方拼写错误。比如文件名,路径错误。拼写错误
评论