当前位置:   article > 正文

github gitee go开发 热门开源项目_gitee 推荐go项目

gitee 推荐go项目

高性能go开发建议

(1)尽可能的使用:=去初始化声明一个变量(在函数内部)
(2)尽可能的使用字符代替字符串
(3)尽可能的使用切片代替数组
(4)尽可能的使用数组和切片代替映射
(5)如果只想获取切片中某项值,不需要值的索引,尽可能的使用for range去遍历切片,这比必须查询切片中的每个元素要快一些
(6)当数组元素是稀疏的(例如有很多0值或者空值nil),使用映射会降低内存消耗
(7)初始化映射时指定其容量
(8)当定义一个方法时,使用指针类型作为方法的接受者
(9)在代码中使用常量或者标志提取常量的值
(10)尽可能在需要分配大量内存时使用缓存
(11)使用缓存模板

组件

字符串 strings

strings

strings.Split(s, sep) 用于自定义分割符号来对指定字符串进行分割,同样返回 slice。
strings.Join(sl []string, sep string) string //Join() 用于将元素类型为 string 的 slice 使用分割符号来拼接组成一个字符串
strings.Contains(s, "f")
strings.HasPrefix(s, prefix string) bool
strings.HasSuffix(s, suffix string) bool
strings.Index(s, str string) int
strings.LastIndex(s, str string) int
strings.Replace(str, old, new string, n int) string
strings.Count(s, str string) int
strings.Repeat(s, count int) string
strings.TrimSpace(s) 来剔除字符串开头和结尾的空白符号;
如果你想要剔除指定字符,则可以使用 strings.Trim(s, "cut") 来将开头和结尾的 cut 去除掉。该函数的第二个参数可以包含任何字符,
如果你只想剔除开头或者结尾的字符串,则可以使用 TrimLeft() 或者 TrimRight() 来实现。
strings.ToUpper(item)
strings.NewReader(str) 用于生成一个 Reader 并读取字符串中的内容,然后返回指向该 Reader 的指针,从其它类型读取内容的函数还有:
Read()[]byte 中读取内容。
ReadByte()ReadRune() 从字符串中读取下一个 byte 或者 rune
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

数据结构

gods

切片slice

map
map 默认无序
如果你想为 map 排序,需要将 key(或者 value)拷贝到一个切片,再对切片排序(使用 sort 包,详见第 7.6.6 节),然后可以使用切片的 for-range 方法打印出所有的 key 和 value。

import (
	"fmt"
	"sort"
)

var (
	barVal = map[string]int{"alpha": 34, "bravo": 56, "charlie": 23,
							"delta": 87, "echo": 56, "foxtrot": 12,
							"golf": 34, "hotel": 16, "indio": 87,
							"juliet": 65, "kili": 43, "lima": 98}
)

func main() {
	fmt.Println("unsorted:")
	for k, v := range barVal {
		fmt.Printf("Key: %v, Value: %v / ", k, v)
	}
	keys := make([]string, len(barVal))
	i := 0
	for k, _ := range barVal {
		keys[i] = k
		i++
	}
	sort.Strings(keys)
	fmt.Println()
	fmt.Println("sorted:")
	for _, k := range keys {
		fmt.Printf("Key: %v, Value: %v / ", k, barVal[k])
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

堆包
container/heap

双向链表
container/list

类型转换

strconv
strconv包提供了字符串和数字之间的转换功能,可以方便地进行类型转换。

strconv.Itoa(int(bytesLength / 1024)) //将int转换为字符串
strconv.Atoi(s string) (i int, err error) //将字符串转换为int
  • 1
  • 2

cast: 不需要panic!在Go语言中进行类型转换易如反掌且安全。

collection: “Collection”为处理数据数组提供了一个流畅、方便的封装。你可以使用“Collect()”方法将一个map或者数组轻松地转换成一个Collection。然后,你可以使用Collection提供的强大而优雅的API来处理数据。

Json

json包
提供了JSON格式的编解码功能,可以方便地处理JSON数据。

type User struct{
	Name string `json:"name"`
	Age int `json:"age"`
}
user := {"zhangsan", 20}
// 实体转json
jsonStr, err = json.Marshal(user);
fmt.Printf("%s\n", jsonStr);

myUser := User{}
// json转实体
myUser, err = json.Unmarshal(&jsonStr);
fmt.Printf("%v\n", myUser);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

gjson: 非常好用的json解析工具库

json-to-go 给你一个json结构的数据,能够将代码转换为对应的结构体,直接在代码中使用,这简直太方便~

命令行参数 flag

flag包提供了解析命令行参数的功能,可以方便地获取用户输入的参数。

cobra: 是一个功能强大的命令行工具库,我们用它来实现内部的命令行工具

反射 reflect

reflect包提供了反射的功能,可以在程序运行时动态地获取和修改对象的信息。

日期时间 time

time
time包提供了时间相关的函数,包括获取当前时间、时间格式化、时间操作等功能。

time.Now()
time.Sleep(1 * time.Second)
  • 1
  • 2

now 时间工具库

数字 Math

Decimal
decimal 精度计算

异常 error

errors:更强大的异常堆栈
error 包装用法

func httpRequestHandler(w http.ResponseWriter, req *http.Request) {
    err := func () error {
        if req.Method != "GET" {
            return errors.New("expected GET")
        }
        if input := parseInput(req); input != "command" {
            return errors.New("malformed command")
        }
        // 可以在此进行其他的错误检测
    } ()

        if err != nil {
            w.WriteHeader(400)
            io.WriteString(w, err)
            return
        }
        doSomething() ...
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

翻译

go-pinyin: 汉字转拼音

对象复制

copier: 一个数据复制的库,与 Java 中的 BeanUtils.copy() 类似;可以将两个字段相同但对象不同的 struct 进行数据复制,也支持深拷贝。

验证

govalidator: 使用简单规则验证Go语言的请求数据。受Laravel请求验证启发。

govalidator: 一个用于字符串、结构体和集合的验证器和过滤器包,基于validator.js。

ozzo-validation: 提供可配置和可扩展的数据验证功能

validate: Go通用的数据验证与过滤库,使用简单,内置大部分常用验证器、过滤器,支持自定义验证器、自定义错误消息、字段翻译。

验证码
aj-captcha-go: AJ-Captcha行为验证码的Go实现包

base64Captcha: 图像验证码

weChat

wechat: WeChat SDK for Go (微信SDK:简单、易用)

wechat-go: go version wechat web api and message framework for building wechat robot

微信开发

支付

gopay: 微信、支付宝、通联支付、拉卡拉、PayPal、Apple 的Go版本SDK。【极简、易用的聚合支付SDK】

dongfeng-pay: 聚合支付,支付系统 前后端齐全

Excel

excelize: 读取和写入XLAM / XLSM / XLSX / XLTM / XLTX文件。它支持读取和写入Microsoft Excel™ 2007及以上版本生成的电子表格文档。该库通过高度兼容性支持复杂的组件,并提供流式API,以从具有大量数据的工作表中生成或读取数据。此库需要 Go 版本1.16或更高版本。您可以使用go的内置文档工具查看完整文档,或在线查看 go.dev 和文档参考。

Word

unioffice: 文档 (docx) [Word] 读/写/编辑 格式化 图片 表格 Word 转 PDF (docx to pdf) 电子表格 (xlsx) [Excel] 读/写/编辑

图像

imaging: Package imaging 提供了基本的图像处理功能(如调整大小、旋转、裁剪、亮度/对比度调整等)。

gg: gg是一个使用纯Go语言渲染2D图形的库。

PDF

gopdf: gopdf是一个用Go语言编写的生成PDF文档的简单库。

gofpdf: gofpdf是一个实现了基于高级支持文本、绘图和图像的PDF文档生成器。

文件 IO

oss: 超轻量级Golang文件服务器

io包
提供了读写数据的基本工具,大部分标准库中输入输出相关的包均依赖于此包。

filename := filePath + ".txt"
body, err := ioutil.ReadFile(filename)
if err != nil {
  return nil, err
}
  • 1
  • 2
  • 3
  • 4
  • 5

bufio包
在 io 包的基础上提供更高级的读写缓冲

runtime

提供了与运行时系统进行交互的接口

OS

os包提供了与操作系统交互的函数,包括文件操作、进程管理、环境变量等功能

工具库

lancet: 实用go工具库

knife: go工具库

gox: Golang 工具集

gobox: Golang工具集

gotool: 轻量级的Golang工具库(无第三方库依赖)

go工具库: go开发中常用的工具

utils: 基于Go Mod的Golang常用开发工具包utils,包括字符串处理、日期转换、类型转换、切片处理、压缩、加密等

Go通用工具: Go的通用基础工具。

gokit: 一套小而全的 Go 工具包。

config: Go config manage(load,get,set). support JSON, YAML, TOML, INI, HCL. multi file load, data override merge. go应用配置加载管理,支持多种格式,多文件加载,支持数据合并.

代码生成工具

gen: GORM Gen 代码生成

generate: go代码生成工具,支持postgresql、msql逆向生成CRUD代码

GoApi-Generator: 基于GORM&Gin的api自动生成器

gorm-reverse: gorm反向生成实体类和json类

Devops 工具

Yearning: A most popular sql audit platform for mysql

gitea: Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD

env: 这个库可以将我们的 环境变量 转换为一个 struct

dig: 一个依赖注入库
所有的对象都是单例。有一个统一的地方管理对象。使用时直接传递对象当做参数进来即可(容器会自动注入)。

sql2gorm: 用于将 sql 语句转换为 golang 的 struct

gowatch: 热编译工具

优雅的重启Http服务

revive: golang 代码质量检测工具

starcharts: Plot your repository stars over time.

lux: Fast and simple video download library and CLI tool written in Go

sponge_examples: Some examples of using sponge to develop go projects.

百灵快传:基于Go语言的高性能 “手机电脑超大文件传输神器”、“局域网共享文件服务器”

Fyne: 是一个 Go 语言开发的易用的 UI工具包,提供基于 OpenGL 的跨平台图形界面应用开发支持

gofs: 基于Golang开发的一款开箱即用的跨平台实时文件同步工具

调试工具

perf: 代理工具,支持内存,cpu,堆栈查看,并支持火焰图

go-torch: 快捷定位程序问题

gops: A tool to list and diagnose Go processes currently running on your system

vagrant 开发环境管理工具,单机搭建可移植工具的利器。支持多种虚拟机后端。类似于docker

nomad 轻量级容器调度工具 可以非常方便的管理容器和传统应用,相比 k8s 来说,简单不要太多.

vault 敏感信息和密钥管理工具

weaver 高度可配置化的 http 转发工具,基于 etcd 配置。

supervisor 进程监控工具

foreman 基于procFile进程管理工具. 相比 supervisor 更加简单。

whistle 基于 http,https,websocket 的调试代理工具,配置功能丰富。在线教育的 nohost web 调试工具,基于此开发.

CloudXNS-DDNS 动态域名

fileboy: fileboy,文件变更监听通知工具,使用 Go 编写。适用于 Hot Reload (典型的如开发go项目,无需每次手动执行 go build;又比如前端 node 打包) 或者 系统监控的场景。

示例代码

gin+gorm示例项目

Web 框架

gin

gin中文文档

gin: gin是一款轻量级的Web框架,具有高性能和易用性的特点,可以快速开发Web应用。

gin-vue-admin: 基于vite+vue3+gin搭建的开发基础平台(支持TS,JS混用),集成jwt鉴权,权限管理,动态路由,显隐可控组件,分页封装,多点登录拦截,资源权限,上传下载,代码生成器,表单生成器,chatGPT自动查表等开发必备功能。

go-gin-api: 基于 Gin 进行模块化设计的 API 框架,封装了常用功能,使用简单,致力于进行快速的业务研发。比如,支持 cors 跨域、jwt 签名验证、zap 日志收集、panic 异常捕获、trace 链路追踪、prometheus 监控指标、swagger 文档生成、viper 配置文件解析、gorm 数据库组件、gormgen 代码生成工具、graphql 查询语言、errno 统一定义错误码、gRPC 的使用、cron 定时任务 等等。

ferry: 基于Gin + Vue + Element UI前后端分离的工单系统

go-admin: go-admin是基于golang快速搭建可视化数据管理后台的框架

go-admin: 基于Gin + Vue + Element UI的前后端分离权限管理系统脚手架(初始化简单,只需要配置文件中修改数据库连接,启动后会自动初始化数据库信息以及必须的基础数据)

gin-admin: 基于 Golang + GIN + GORM+ CASBIN + WIRE + Ant Design React的RBAC权限管理脚手架

gin-x: Gin-x 提供更多的组件,让 Gin 框架开发更加高效。

gf
gf: GoFrame is a modular, powerful, high-performance and enterprise-class application development framework of Golang.

beego
beego: beego是一款全功能的Web框架,具有MVC架构、ORM、路由、缓存、Session等功能。

iris
iris: The fastest HTTP/2 Go Web Framework. New, modern and easy to learn. Fast development with Code you control. Unbeatable cost-performance ratio

推荐阅读
相关标签