Go环境配置

1、下载go安装包

下载地址

根据需要选择下载的版本,这里我选择的是go.1.15
1、不推荐下载最新的go.1.18,因为可破解的goland是2020年版本,go语言版本升级IDEA版本不支持会导致报以下错误

‘main‘ collides with name declared in this package 或 Found several packages [http, main]

2、如果安装go的版本是1.17.11,golang是2020,由于版本不匹配无法在golang中自动识别出sdk

go1.17.11
go version

2、配置环境变量

安装完成后会自动在环境变量中添加了E:\Installation\Go\bin,若没有自动添加,则手动加上
在这里插入图片描述
接着在系统变量中新建GOROOT和GOPATH,其中GOROOT为go的安装路径,GOPATH是自己新建文件夹gowork的路径(在gowork中分别新建bin,src和pkg文件夹)
在这里插入图片描述

3、go env中修改配置

在这里插入图片描述
首先确保 GO111MODULE=on,可以在cmd中使用go env 查看,若没有打开,可以在命令行窗口通过

go env -w GO111MODULE=on

然后修改代理为阿里云,可以加快导入依赖的速度

go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/

至此go环境安装完成

goland安装使用

1、官网下载goland安装包(推荐2020)

官网地址:GoLand
2020下载链接goland2020.03

2、安装到这一步选择对应的框框

在这里插入图片描述
选择第二个不导入配置
在这里插入图片描述

3、free方法

链接:https://pan.baidu.com/s/15kmt4wHnxAW2NDlP1qSr1A
提取码:zzz7

将该压缩包(不要解压)拖到gland代码区,重启goland
在这里插入图片描述选择help->eval reset
然后勾选 auto reset before per restart 那个选项,自勾选后每次重启/退出 IDE 时会自动重置试用信息,无需做额外的事情

在这里插入图片描述
在这里插入图片描述
——————————————————————————————————————————————————
我是分割线
——————————————————————————————————————————————————

创建go项目

1、用go mod搭建项目可以在任意位置新建文件bmsgo,在终端中执行命令

go mod init bmsgo
go run main.gogo build ./bmsgo

在goland中设置edit configurations

点击新建go build
run kind改为files
学习资料
go语言基础
goWeb
go中文文档

引入gin框架依赖

go get -u github.com/gin-gonic/gin
-u
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
go env -w GOPROXY=https://goproxy.cn,direct go env -w GOSUMDB=off
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/

引入gorm框架依赖

gorm中文文档

go get -u github.com/jinzhu/gorm 

其中在gorm中,默认的表名都是结构体名称的复数形式,比如User结构体默认创建的表为users;**后面的json就是我们返回数组是前面对应的键

go get github.com/go-sql-driver/mysql

注意:在导入数据库 驱动时候,需要空白导入才可以

_"github.com/go-sql-driver/mysql"

引入jwt实现用户认证

go get github.com/dgrijalva/jwt-go

引入viper

go get github.com/spf13/viper

—————————————————————————————————

踩坑记录

遍历slice

for i:= range c{
	fmt.Printf("c[%d]:%d\n",i,c[i])
}

类型转换
string转成int:

int, err := strconv.Atoi(string)

string转成int64:

int64, err := strconv.ParseInt(string, 10, 64)

int转成string:

string := strconv.Itoa(int)

int64转成string:

string := strconv.FormatInt(int64,10)

gorm返回json数组形式

	var bookArr []model.Book
	var book model.Book

	result:=db.Find(&book)
	total:=result.RowsAffected

	db.Offset((page_num - 1) * page_size).Limit(pageSize).Find(&bookArr)

	sliceBook:=make([]model.Book,0)
	for i:=range bookArr{
		sliceBook=append(sliceBook,bookArr[i])
	}
	if sliceBook==nil{
		ctx.JSON(http.StatusOK,gin.H{"code":400,"msg":"no bookArr found"})
		return
	}
	response.Success(ctx,gin.H{"total":total, "book":sliceBook},"分页数据返回成功")

返回结果:

{
    "code": 200,
    "data": {
        "book": [
            {
                "ID": 3,
                "CreatedAt": "0001-01-01T00:00:00Z",
                "UpdatedAt": "0001-01-01T00:00:00Z",
                "DeletedAt": null,
                "bookName": "这就是二十四节气",
                "bookAuthor": "高春香",
                "bookPublish": "电子工业出版社"
            },
            {
                "ID": 4,
                "CreatedAt": "0001-01-01T00:00:00Z",
                "UpdatedAt": "0001-01-01T00:00:00Z",
                "DeletedAt": null,
                "bookName": "白夜行",
                "bookAuthor": "东野圭吾",
                "bookPublish": "南海出版公司"
            }
        ],
        "total": 14
    },
    "msg": "分页数据返回成功"
}

1、切片初始化参数、ctx获取前端数据格式

go插件

gocode	代码自动补全	https://github.com/mdempsky/gocode
go-outline	在当前文件中查找	https://github.com/ramya-rao-a/go-outline
go-symbols	在项目路径下查找	https://github.com/acroca/go-symbols
gopkgs	自动补全未导入包	https://github.com/uudashr/gopkgs
guru	查询所有引用	https://golang.org/x/tools/cmd/guru
gorename	重命名符号	https://golang.org/x/tools/cmd/gorename
goreturns	格式化代码	https://github.com/sqs/goreturns
godef	跳转到声明	https://github.com/rogpeppe/godef
godoc	鼠标悬浮时文档提示	https://golang.org/x/tools/cmd/godoc
golint	就是lint	https://golang.org/x/lint/golint
dlv	调试功能	https://github.com/derekparker/delve/tree/master/cmd/dlv
gomodifytags	修改结构体标签	https://github.com/fatih/gomodifytags
goplay	运行当前go文件	https://github.com/haya14busa/goplay/
impl	新建接口	https://github.com/josharian/impl
gotype-live	类型诊断	https://github.com/tylerb/gotype-live
gotests	单元测试	https://github.com/cweill/gotests/
go-langserver	语言服务	https://github.com/sourcegraph/go-langserver
filstruct	结构体成员默认值	https://github.com/davidrjenni/reftools/tree/master/cmd/fillstruct