Skip to content

安装go

准备go环境

在这里可以下载到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")
	}