go基础(1)
下载并配置环境
在官网下载iso后缀的go安装包后,配置go环境与go工作空间环境;
go工作空间名自定义为了goProject,在该文件夹下创建三个文件夹
src:存放源码
bin:存放源码编译后的二进制可执行文件
pkg:存放编译的中间文件
配置go的源,加速go get 获得外网包的速度
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
golang 的国内镜像源:
阿里云:mirrors.aliyun.com/goproxy 微软:goproxy.io 七牛云:goproxy.cn GoCenter:gocenter.io
开发集成工具
使用vscode进行开发,安装go插件,并下载go语言的IDE功能;(不会的上网自己搜)
项目初始化
在goProject文件夹下新建hello文件夹编写代码;
当代码中需要导入包含在其他模块中的包时,先使用
go mod init #{名字为go文件的根路径}
初始化项目,管理依赖项,可从远程仓库使用三方包;
go mod tidy
用于整理和清理项目的模块依赖。它会根据项目的实际依赖情况,更新go.mod
文件并删除不再需要的依赖项。这有助于保持go.mod
文件的整洁,并确保项目只包含实际需要的依赖;
之后使用
go run .
编译并执行当前目录下的main.go文件;
本地模块调用
在goProject文件夹下新建greetings文件夹编写代码;
初始化包后,在hello文件夹中使用
go mod edit -replace example.com/greetings=../greetings
将本地goProject文件夹内mod命名为example.com/greetings的包引入到当前路径下,从而可以使用
go mod tidy
获得到此本地包的public函数;
测试操作
在包中创建xxx_test.go命名的文件,并在包中导入testing包后,设计测试函数,即可通过
go test -v
(启动当前包内所有的测试函数并详细列出每个测试的结果)
go test
(启动当前包内所有的测试函数)
实现测试操作;
编译与安装文件
对于可以正常运行的包我们经常采用
go run .
在编辑器内部进行编译并运行;
我们还可以先通过
go build
对包进行编译,这样会在系统默认的install安装位置产生一个二进制可执行文件(.exe),在编译之前可以使用
go list -f '{{.Target}}'
查询系统默认的安装路径;
如果我们不想使用该默认安装路径可以通过
go env -w GOBIN=D:\goProject\bin
改变系统默认的安装路径;
之后在命令行中在当前安装路径下输入hello.exe(假如是对hello.go文件进行编译后产生的文件),即可运行当前程序;
为了方便在非当前包中也可以执行此程序,需要将上述安装路径配置环境
set PATH=%PATH%;D:\goProject\bin
(需要使用开启管理员权限的cmd,本人是直接手动在环境变量path中添加了该路径)
之后就可以使用命令行在任意路径时输入hello.exe运行程序啦;
工作空间最终结构:
go内置包详解
fmt包
fmt.println(string)
打印数据到终端并\n回车;
fmt.Sprintf(string,)
在输出内容中添加格式符进行替换输出;
log包
log.SetPrefix(string)
在日志打印前输出此数据;
log.setFlags(int)
设计标记;
log.Fatal(string)
日志打印后终止程序;
math包
rand.Intn(int)
获得[0,n]的任意整数;
error包
errors.New(string)
获得一个报错信息;
regexp包
REG:=regexp.MustComplie(string)
输入一个正则表达式获得一个匹配项;
REG.MatchString(string)
对传入的字符串参数进行匹配项搜索,返回布尔值;
testing包
*testing.T
作为测试函数的传参类型,一般测试函数传参格式为(T *testing.T);
t.Fatalf(string,)
用于测试函数的日志输出,可在输出内容中添加格式符输出,日志打印后输出一个回车符\n终止程序;