Go语言学习笔记-Go语言概述与开发环境搭建(传智播客Go语言与区块链2019版)
Go语言概述
Go语言诞生的背景
2007年谷歌的三位大牛为了解决Google在软件开发中遇到的一些困难:
- 多核硬件架构
- 超大规模的分布式集群(上万台甚至是几十万台服务器)
- Web开发模式导致前所未有的开发规模和更新速度
Go语言的特性
- 运行速度快,简单易学
运行速度高于Java,Python,学习难度相对于C/C++简单 - 开源、跨平台
支持Windows,Linux,macOS等主流的操作系统 - 简单
相对于C的37个关键和C++11多达84个关键字,Go语言只有25个关键字,另外对于复杂的任务,比如说并发编程和内存管理,Go语言都内置了并发支持以及垃圾回收机制。 - 高效
Go语言作为一种编译的静态类型语言,尽管支持了垃圾回收机制,但是仍然可以使用指针去直接访问内存。 - 生产力
Go语言有简洁清晰的依赖管理,以及独特的接口类型设计,甚至对编程方式的约束,比如在程序的扩展上支持符合而不支持继承的扩展方式,这些都使得它成为一门极具生产力的语言。
Go语言的应用场景
- 网络编程
- 服务器编程
- 区块链开发
阿里、腾讯、百度、滴滴都在自己的业务中使用Go语言构建大规模的互联网系统,知乎也舍弃Python从而使用Go语言重构推荐系统
Docker和Kubernetes都是使用Go语言编写的,所以Go也被称为云端开发语言
著名的区块链项目:以太坊、Hyperledger都可以使用Go开发。
传统的企业应用和物联网应用都有Go的身影,对于掌握Go语言对于未来的个人成长和职业发展都有非常重要的意义。
Go语言开发环境搭建
Go1.14下载
Go语言官网: https://golang.google.cn/
如果想要开发Go程序,首先需要去Go官网下载和安装Go,当打开Go官网首页后,点击Download Go
然后就会跳转到Go的下载页,Go语言提供了主流操作系统(Windows,Linux,macOS)的各个版本安装包。
目前(2020/03/08)最新版本的Go语言是Go1.14,如果是Windows系统选择下载 go1.14.windows-amd64.msi即可,而如果你的系统是macOS系统则可以选择下载 go1.14.darwin-amd64.pkg
Go1.14安装
Windows系统的Go语言安装文件go1.14.windows-amd64.msi文件下载完成以后就可以直接双击进行安装了。
配置Go的安装路径
Windows默认的Go语言安装路径是C:\Go,如果自定义安装目录,不能带中文和空格
GOPATH配置
在安装完Go之后,需要在系统环境中配置GOPATH。
Windows系统的GOPATH配置实现如下所示
首先打开文件资源管理器,然后找到此电脑,右键单击属性
在系统环境变量中新建GOPATH,其变量值指向D:\workspace\go\ittimeline\vs_code\go-core
然后在DOS命令行中输入go env
命令来查看Go的环境信息,重点关注GOPATH的值即可。
还可以通过go version
命令查看Go的版本信息
C:\Users\ittim>go version
go version go1.14 windows/amd64
Visual Studio Code 介绍
Visual Studio Code是一个轻量级但功能强大的源代码编辑器,可在您的桌面上运行,并且可用于Windows,macOS和Linux。它具有对JavaScript,TypeScript和Node.js的内置支持,并具有丰富的其他语言(例如C ++,C#,Java,Python,PHP,Go)和运行时(例如.NET和Unity)扩展的生态系统。
关于Visual Studio Code的详细使用,官网也提供了文档,其访问地址是 https://code.visualstudio.com/docs ,读者可以阅读该文档了解Visual Studio Code的详细使用。
Visual Studio Code 下载、安装
当使用Chrome浏览器访问Visual Studio Code的官网首页时,浏览器会自动检测系统的版本(Windows,Linux,macOS),然后显示和系统对应的Visual Studio Code版本下载。
如果电脑是Windows系统,点击Download for Windows即可,目前(2020/03/08)最新的版本是1.42.1
下载完成后直接双击VSCodeUserSetup-x64-1.42.1.exe程序便可以进行安装
Visual Studio Code启动界面
Viusal Studio Code在首次启动时会自动创建一个文件Untitled-1,如果不需要使用该文件,直接关闭该窗口即可
Go语言工作目录规划
在正式开发Go程序之前,首先在本地磁盘(我这里选择D盘作为根目录)创建两个工作目录:D:\workspace\go\ittimeline\vs_code\go-core 和D:\workspace\go\ittimeline\goland,用于区分两个不同Java开发工具的工作目录。其中D:\workspace\java\ittimeline\vs_code\go-core用于存放Visual Studio Code开发的Go程序,而D:\workspace\java\ittimeline\goland用于存放GoLand开发的Go程序。
Visual Studio Code开发Go程序
go-core项目创建以及插件安装
首先启动Visual Studio Code,然后点击打开文件夹
打开目录D:\workspace\go\ittimeline\vs_code\go-core
然后在go-core目录下依次创建三个同级别的目录src,bin和pkg
然后在src目录下创建 net\ittimeline\go\core\foundational\object目录
接着在net\ittimeline\go\core\foundational\object下创建Go语言的源程序helloworld.go
当创建源文件helloworld.go时Visual Stuido Code 右下角的Go扩展提示安装一些Go的工具
当点击Install All之后控制台会输出安装工具的过程,默认安装的路径是GOPATH下的bin目录。
下载的过程会比较漫长...
当安装成功之后会看到输出All tools successfully installed. You are ready to Go :).
然后可以在GOPATH的bin目录下看到下载的可执行文件,其中dlv.exe是Go语言的调试器,如果想要在Visual Studio Code中调试Go程序,必须下载dlv.exe。
Visual Studio Code开发Go程序
当Visual Studio Code开发Go程序所需要的插件安装完成以后,便可以进行Go程序的开发了。
学习任何一门编程语言都是使用HelloWorld作为例子,这里也不例外,使用Go语言编写程序,用于实现打印输出Windows10 & Go1.14& Visual Studio Code Hello World With Go
package main
import "fmt"
func main() {
fmt.Println("Windows10 & Go1.14& Visual Studio Code Hello World With Go")
}
Go程序的基本结构
helloworld.go程序由包、代码依赖以及功能实现(即main函数)三部分组成。
package main //包,表明代码所在的模块(包)
import "fmt" //引入代码依赖
//功能实现
func main() {
fmt.Println("Windows10 & Go1.14& Visual Studio Code Hello World With Go")
}
Go程序的注意事项
- Go语言区分大小写
- 语句结尾不需要使用分号
- 代码风格不自由,强制缩进
Go语言可执行程序的说明
- 必须是main包:
package main
- 必须包含main方法,
func main
- 文件名不一定是main.go,package的名字和目录名不需要一致
- 同一个目录下只能有一个可执行程序,即包声明为main包并且包含main方法的程序
Visual Studio Code 调试Go程序
切换到Visual Studio Code的运行和调试,点击运行和调试(快捷键F5)
程序会输出Windows10 & Go1.14& Visual Studio Code Hello World With Go
Go语言与其他编程语言的差异
main函数返回值的差异
Go语言中的main函数不支持任何返回值,而是通过os.Exit()
来返回程序退出时的状态。
通常情况下os.Exit()
中传入参数0表示正常退出,os.Exit()
中传入参数-1表示异常退出。
Go语言程序的运行除了使用devle工具外,还可以借助Go语言提供的go run命令来执行Go程序
正常退出
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("Windows10 & Go1.14& Visual Studio Code Hello World With Go")
os.Exit(0)
}
异常退出
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("Windows10 & Go1.14& Visual Studio Code Hello World With Go")
os.Exit(-1)
}
获取命令行参数
Go语言的main函数不支持传递参数,可以用过os.Args()
来获取命令行参数
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("Windows10 & Go1.14& Visual Studio Code Hello World With Go")
//打印输出命令行参数 使用os.Args获取命令行参数
fmt.Println("当前程序的命令行参数:", os.Args)
//打印输出命令行参数的格式
fmt.Println("命令行参数的个数:", len(os.Args))
if len(os.Args) > 1 {
fmt.Println("获取第二个命令行参数的结果:", os.Args[1])
}
os.Exit(0)
}
Go注释
注释是针对Go语言源程序的说明性文字,通过添加适当的注释,增加程序的可读性,方便后期维护,注释的内容不会被编译,即注释不会影响程序的运行效果。
Go语言的注释分为单行注释和多行注释。
单行注释使用//
表示,快捷键Ctrl+/,多行注释使用/**/
表示,Goland快捷键是Shift+Ctrl+/,在使用多行注释时不能嵌套使用。
package main //包,表明代码所在的模块(包) 如果是可执行程序,必须声明为main包
import "fmt" //代码依赖,因为要使用到Println()函数,因此必须导入fmt
/*
单行注释和多行注释的应用
*/
//程序的入口
func main() {
//打印输出 跟Tony老师学Go语言 并换行
fmt.Println("跟Tony老师学Go语言")
}