豆包MarsCode AI刷题

4 阅读3分钟

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运行程序啦;

工作空间最终结构:

image-20240613214949378

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终止程序;