Go常用命令

Golang常用工具参考地址:

https://www.topgoer.cn/docs/go-tool/go-tool-1e1hmuk5danv3

Go社区中的包地址:

https://pkg.go.dev/

Github中文社区地址:

https://www.github-zh.com

Golang参考博客:

https://zh.mojotv.cn/

客户端应用框架:

  • Tauri
  • Electron
  • fyne
  • wails: https://wails.golang.ac.cn/docs/introduction/

web后台框架参考:

  • https://arco.design/vue //字节跳动出品

前端应用的框架:

  • https://uniapp.dcloud.net.cn/

GUI框架(基于GTK):

https://github.com/gotk3/gotk3

游戏引擎:

  • godot 官方文档:https://docs.godotengine.org/zh-cn/4.x/index.html
  • unity

机器人、物理计算、物联网框架:

  • Gobot

性能分析工具:

  • pprof

常用命令

  • go run abc.go :运行go文件
  • go build abc.go :编译go文件生成二进制文件
  • GOCACHE=off go build //构建禁用缓存(linux系统)
  • go build -n abc.go //只是打印go build执行过程,并不真正的编译
  • GOOS=windows GOARCH=amd64 go build -o app.exe app.go //编译为amd64位windows
  • GOOS=windows GOARCH=386 go build -o app.exe app.go //编译为32位windows
  • GOOS=linux GOARCH=amd64 go build -o applinux app.go //编译为amd64位的linux
  • GOOS=linux GOARCH=386 go build -o app app.go //编译为32位的linux
  • go install abc.go :编译并且安装包和依赖。分两步,编译生成结果文件,将结果文件移到GOPATH/pkg或者GOPATH/bin目录下
  • go get :下载并安装包和依赖。分为两步,下载所需的依赖包,编译并安装
  • go vet abc.go :检测代码的常见错误
  • fmt.Printf:把格式字符串输出到标准输出,一般是屏幕,可重定向
  • fmt.Sprintf:把格式字符串输出到指定字符串中,并返回字符串,可以用于赋值操作
  • fmt.Fprintf:把格式字符串输出到指定文件设备中
  • fmt.Errorf:通过格式化功能描述错误消息,并返回error,可用于函数返回
  • go fmt abc.go :将abc.go文件格式化显示,相当于将代码格式化下,更有利于阅读
  • 双引号(“”):双引号里的字符串可以转义,不能换行
  • 反引号(“):反引号里面的内容不能转义,可以换行,一般用于SQL语句,html等大段内容,以及正则表达式的使用
  • 单引号(”);单引号,一般只能用来包裹一个字节的ASCII码字符,例如:var asc byte = ‘a’
  • go env -w GOPROXY=https://goproxy.cn :配置代理,解决go get 下载包超时问题
  • CGO_ENABLED=0 go build main.go :将go文件编译成alpine版本,否则启动会报错
  • log.Fatal(err) :报告错误并停止运行程序
  • go doc fmt :获得包fmt的文档,查看包fmt的使用信息
  • go doc strconv Itoa :查看包stsrconv中的函数Itoa的信息,用法
  • go doc gin RouterGroup.GET:查询gin包下的RouterGroup结构体下的GET方法
  • go fix main.go : 修正指定代码包中过时的语法和代码调用
  • sort.Strings(slice) :对切片元素按照字母排序
  • time.Now().Unix() : 获取当前时间戳,单位为秒
  • time.Now().UnixNano() : 获取当前时间戳,单位为纳秒
  • time.Now(): 获取当前时间
  • time.Now().Year(): 获取年
  • time.Now().Month(): 获取月
  • time.Now().Day(): 获取日
  • time.Now().Hour(): 获取时
  • time.Now().Minute(): 获取分
  • time.Now().Second(): 获取秒
  • time.Now().Nanosecond(): 获取纳秒
  • fmt.Println(err.Error()):将错误信息转换为字符串输出,Error()为golang自带的接口error中的方法
  • return:结束当前函数,并返回指定值
  • runtime.Goexit:结束当前goroutine,其他的goroutine不受影响,主程序也一样继续运行
  • os.Exit():立即退出应用程序、defer不执行
  • log.Fatal():打印输出内容、退出应用程序、defer不执行
  • strings.TrimSpace(str) :去除字符串str左右两边的空格
  • strings.Split(a, “.”) //对字符串a以.为分隔符进行切割,切割后的元素组成为一个切片
  • strings.Join(a, “_”) //对字符串切片进行拼接,例如a := []string{“hello”,”world”} 拼接后为hello_world
  • strings.Contains(“helloworldabcderffg”,”hello”) //判断字符串中是否包含字符串hello
  • io.EOF:读取内容完毕后,再也读不到就会返回io.EOF
  • go help build //查看go build用法
  • go tool link //该命令链接Go的归档文件比如静态库,以及链接其所有依赖,生成一个可执行文件(含main package)
  • go fmt a.go //格式化代码
  • reflect.DeepEqual()可用于比较变量是否相等,也可以比较map
  • go list std //列出所有已安装的标准库
  • go clean -cache //清楚当前项目的构建缓存
  • go clean -modcache //清除所有模块缓存(包括依赖包)
  • go clean -testcache //清除测试缓存
  • go clean -cache -modcache -testcache //彻底清理所有缓存

常用函数方法

  • os.ReadDir() //读取目录内容
  • reflect.DeepEqual() //用于比较array,struct,map,slice是否相等

中间件:

中间件用途之一可以用来jwt和gin之间作为桥梁进行连接,在请求api的时候进行jwt认证

全局中间件:

//初始化Engine实例
router := gin.New()
//一次设置多个中间件 
router.Use(Logger(), Recovery())
//一次设置一个中间件
router.Use(gin.Logger())
router.Use(gin.Recovery())

路由组中间件:

//在声明路由组的同时设置路由组中间件
authorized := router.Group("/", Middleware())

//先声明路由组然后再通过use进行设置
authorized := router.Group("/")
authorized.Use(Middleware())

单个路由中间件:

//单个路由设置单个中间件
router.GET("/login", LoginMiddleware, handler) //handler表示路由处理程序如:api.Login
//单个路由设置多个中间件
router.GET("/mid", TimeMiddleware, CookieMiddleware(), handler)

常用库github地址

定时任务地址:        github.com/robfig/cron
grpc地址:            github.com/grpc/grpc-go/releases/tag/v1.50.1
处理float64四舍五入:github.com/shopspring/decimal
强制类型转换包com:   github.com/unknwon/com
web框架gin地址:      github.com/gin-gonic/gin
web框架lris地址:     https://www.iris-go.com/
Windows-gui库walk:  github.com/lxn/walk
walk文档地址:       pkg.go.dev/github.com/lxn/walk
go-redis:            github.com/redis/go-redis
go-es客户端:         github.com/elastic/go-elasticsearch
读取yaml配置文件:    gopkg.in/yaml.v2
读取配置文件:        github.com/spf13/viper(可读JSON, TOML, YAML, HCL, .env, and Java properties)
基于Go的CLI程序:     github.com/spf13/cobra
读取.env文件:        github.com/joho/godotenv
日期时间库:          github.com/golang-module/carbon
数据库对象关系映射:  gorm.io/gorm(SQLite, PostgreSQL和MySQL等)
网页爬虫框架:        github.com/gocolly/colly
机器学习:            github.com/nlpodyssey/spago
图片验证码:          github.com/mojocn/base64Captcha

vue3-element-admin地址

https://github.com/youlaitech/vue3-element-admin