安装go
准备go环境
- 下载链接:https://go.dev/dl/
在这里可以下载到window版本、mac版本以及linux下版本。下载完毕后,分别安装即可。window和mac的安装都没什么过多的废话可以说的。这里着重简单说一下linux版本。
// 下载到linux文件,或者拷贝到linux对应文件夹后
// 比如拷贝到了当前目录
// 将文件解压到/usr/local
tar -C /usr/local -xzf go1.19.5.linux-amd64.tar.gz
// 修改环境变量
export PATH=$PATH:/usr/local/go/bin
查看版本
// 安装完毕之后,便可以在命令行中查看版本
go version // go version go1.19.5 linux/amd64
// 顺便可以查看go语言中的环境变量
go env
准备开发环境
我这里使用的开发工具是Visual Studio Code,下载地址为 https://code.visualstudio.com/Download
VS Code中安装插件 Go,这里就包含了很多的功能:
- 智能感知
- 代码导航
- 代码编辑
- 代码诊断
- 测试和调试
- 等等其他功能
- 当然你也可以下载其他插件进行安装和使用
hello world
找到一个位置,进行查看创建文件夹,然后用VSCode打开文件夹,并在文件夹中新建main.go的文件 在main.go中的代码如下
package main
import "fmt"
func main() {
fmt.Println("hello, world")
}
有了代码,直接命令行中,cd到main.go相同的目录
// 以调试的模式运行
go run main.go
// 或者在其他目录通过相对路径的方式进行运行
go run /xx/xx/main.go
则可以看到控制台下输出了hello world,则表明我们的开发环境搭建成功了。
如果go build发生错误
go: go.mod file not found in current directory or any parent directory; see 'go help modules'
则需要我们进行初始化项目
// godemo则为module name
go mod init godemo
执行完毕后,则可以看到项目目录下多了一个go.mod文件
如果有其它的项目依赖,则需要执行安装依赖的命令
// 安装项目的依赖
go mod tidy
OK之后,再重新运行go build,则项目下则会生成一个godemo.exe文件,直接运行后同样可以看到hello world的控制台输出。
linux 下载
总结
前端从零入坑go后端开发(一):搭环境、打印hello world、尝试最简api服务、部署linux、最后做个小规划
年后跟公司另外一个前端,开始从零学习go,有时间就学习一点,把点滴记录总结下来,方便后续的查看和学习。如果有前端有兴趣的也可以一起加入学习。
通过简单的搭建环境,输出hello world,再到最简单的承载web服务,部署到linux服务器。初步来其实跟nodejs非常相似,只是依赖发生了变化而已,这个入门相对来说还是非常简单的,不会劝退太多的人。接下来有时间我会继续学习搭建后端服务接口的一个小框架。
- gin轻量级的web框架
- gorm性能极高的orm操作数据库 Mysql 的框架
- go-redis go中操作redis
- amqp091-go go中操作rabbitmq
- consul 服务发现和服务治理
- go-micro 构建微服务的基础框架
- golang-jwt 登录token认证
- 授权体系
- 等等,暂时想到这么多,会根据业务的调整慢慢的来优化这一条线路
gin post提交
// @Param account formData string true "账号"
// @Param password formData string true "密码"
account := ctx.PostForm("account")
password := ctx.PostForm("account")
gin post提交
{
"account": "11",
"password": "22"
}
// @Param loginModel body LoginModel true "User information"
var loginModel LoginModel
if err := ctx.ShouldBindJSON(&loginModel); err != nil {
return dto.SetResponseFailure("err--err--err--err")
}