从零开始学习GO语言-搭建Go语言开发环境-快速开发入门小程序
目录
下载地址
Go官网下载地址:https://golang.org/dl/
Go官方镜像站(推荐):https://golang.google.cn/dl/
Go中文官方镜像站(推荐) https://studygolang.com/dl
Go学习群: 760606769
版本的选择
Windows平台和Mac平台推荐下载可执行文件版,Linux平台下载压缩文件版。
软件包的安装 (case windows )
- Git 客户端,主要go需要用到第三方包,需要用到Git
- go1.2*.msi 是go的sdk 开发环境
- VsCode 是开发代码编辑器 推荐使用
以上安装都是默认进行安装
Linux下安装
go1.11.5.linux-amd64.tar.gz
wget https://dl.google.com/go/go1.11.5.linux-amd64.tar.gz
/usr/local
mkdir -p /usr/local/go # 创建目录
tar -C /usr/lcoal/go zxvf go1.11.5.linux-amd64.tar.gz. # 解压
sudo/usr/local/
/etc/profile$HOME/.profile
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
/etc/profile$HOME/.profile$HOME/.profile
~ go version
go version go1.11.5 linux/amd64
配置GOPATH
GOPATH
GOPATHGOPATHsrc
D:\code\go
安装完成后
1.打开CMD命令 执行
C:\Users\Thinkpad>go version
go version go1.12.5 windows/amd64
C:\Users\Thinkpad>go env
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\Thinkpad\AppData\Local\go-build
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=D:\project
set GOPROXY=
set GORACE=
set GOROOT=C:\Go
set GOTMPDIR=
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\Thinkpad\AppData\Local\Temp\go-build378541758=/tmp/go-build -gno-record-gcc-switches
以上输出说明成功安装GO开发环境
其他配置
在我们 GOPATH=D:\project 目录中新建多个目录: src、pkg、bin
针对上述目录解释说明:
src:存放源代码;
pkg:存放编译完之后的一些静态库(当执行go install时会将一些静态库存放在该目录下)
bin:存放二进制可执行程序文件
GOPATH意义
你知道设置 GOPATH 有什么意义吗?
你可以把 GOPATH 简单理解成 Go 语言的工作目录,它的值是一个目录的路径,也可以是多个目录路径,每个目录都代表 Go 语言的一个工作区(workspace)。
事实上,由于 Go 语言项目在其生命周期内的所有操作(编码、依赖管理、构建、测试、安装等)基本上都是围绕着 GOPATH 和工作区进行的。
Go项目结构
$GOPATH/srcgo buildgo installgo get$GOPATH/src$GOPATH/bin$GOPATH/pkg
$GOPATH/srcbinpkg
适合个人开发者
GOPATHsrc
适合企业开发者
Golang语言的特点
简介
Go 语言保证了既能到达 静态编译语言的安全和性能,又达到了 动态语言开发维护的高效率,使用一个表达式来形容 Go 语言:Go = C + Python , 说明 Go 语言既有 C 静态语言程序的运行速度,又能达到 Python 动态语言的快速开发。
//go 语言的指针的使用特点(体验)
func testPtr(num *int) {
*num = 20
}
//写一个函数,实现同时返回 和,差
//go 函数支持返回多个值
func getSumAndSub(n1 int, n2 int) (int, int ) {
sum := n1 + n2 //go 语句后面不要带分号.
sub := n1 - n2
return sum , sub
}
Go语言快速开发入门第一个Go程序
1.需求
要求开发一个hello.go程序,可以输出hello world
2.开发的步骤
package main // 声明 main 包,表明当前是一个可执行程序
import “fmt” // 导入内置 fmt 包
func main(){ // main函数,是程序执行的入口
fmt.Println(“Hello World!”) // 在终端打印 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”)
表示调用 fmt 包的函数 Println 输出 “hello,world”
3 通过 go build 命令对该 go 文件进行编译,生成 .exe 文件.
4 运行 hello.exe 文件即可
5 注意:通过 go run 命令 可以直接运行 hello.go 程序 [类似执行一个脚本文件的形式]
go build
go build
在hello目录下执行:
go build
或者在其他目录执行以下命令:
go build hello
GOPATHhello
hello.exe
hello.exe
D:\project\src\gocode.com\day01\helloworld\helloworld.exe
Hello World!
-o
go build -o heiheihei.exe
go install
go installGOPATHGOPATH
跨平台编译
go build
只需要指定目标操作系统的平台和处理器架构即可:
SET CGO_ENABLED=0 // 禁用CGO
SET GOOS=linux // 目标平台是linux
SET GOARCH=amd64 // 目标处理器架构是amd64
go build
Mac 下编译 Linux 和 Windows平台 64位 可执行程序:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
Linux 下编译 Mac 和 Windows 平台64位可执行程序:
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
Windows下编译Mac平台64位可执行程序:
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build
Golang 执行流程分析
如果是对源码编译后,再执行,Go 的执行流程如下图
如果我们是对源码直接 执行 go run 源码,Go 的执行流程如下图
两种执行流程的方式区别
- 如果我们先编译生成了可执行文件,那么我们可以将该可执行文件拷贝到没有 go 开发环境的机
器上,仍然可以运行 - 如果我们是直接 go run go 源代码,那么如果要在另外一个机器上这么运行,也需要 go 开发
环境,否则无法执行。 - 在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件变大了
很多
Go 程序开发的注意事项
- Go 源文件以 “go” 为扩展名。
- Go 应用程序的执行入口是 main()函数。 这个是和其它编程语言(比如 java/c)
- Go 语言严格区分大小写。
- Go 方法由一条条语句构成, 每个语句后不需要分号(Go 语言会在每行后自动加分号),这也体现出 Golang 的简洁性。
- Go 编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多条语句写在同一个,否
则报错
-
go 语言 定义的变量或者 import 的包如果没有使用到,代码不能编译通过。
Go 语言的转义字符(escape char)
说明:常用的转义字符有如下:
1) \t : 表示一个制表符,通常使用它可以排版。
2) \n :换行符
3) \ :一个
4) " :一个”
5) \r :一个回车 fmt.Println(“天龙八部雪山飞狐\r 张飞”);
练习题
要求:请使用一句输出语句,达到输入图形效果
package main
import "fmt" //fmt 包中提供格式化,输出,输入的函数.
func main() {
//要求:要求:请使用一句输出语句,达到输入如下图形的效果
fmt.Println("姓名\t 年龄\t 籍贯\t 地址\njohn\t20\t 河北\t 北京")
}
现在,开启你的Go语言学习之旅吧。人生苦短,let’s Go.