Golang 相关的github 开源项目
1. pan-light
- url: http://github.com/peterq/pan-light
- star: 12.1k
- fork: 2.5k
- watch: 284
用Golang和Qt5编写的不限速版百度网盘。相比之前版本的百度网盘客户端,当前版本拥有更友好、便捷的图形界面,体量更轻,便于使用,只需下载即可使用。
2. goim
- url: http://github.com/Terry-Mao/goim
- star: 7.3k
- fork: 1.8k
- watch: 396
这是一个轻量级、高性能的IM实时信息推送应用程序,支持集群交互。
项目通过Golang实现,支持包括广播消息、房间推送、安全验证、多协议,以及基于Kafka的异步消息推送功能。
3. go-admin
- url: http://github.com/GoAdminGroup/go-admin
- star: 8.4k
- fork: 1.4k
- watch: 140
通过 Golang 编写的数据可视化管理平台。
有以下特性:
- 生产效率高:10 分钟可以做出一个好看的管理后台
- 主题样式多:默认样式 adminlte,更多主题持续制作中
- 插件化应用:提供插件使用,解决问题用插件高效解决
- ✅认证:rbac 认证系统,开箱即用
- ⚙️框架支持:支持大部分框架接入,更容易上手和扩展
4. nes
- url: http://github.com/fogleman/nes
- star:5.5k
- fork: 520
- watch: 143
这是一个用Golang编写的NES模拟器。虽然现在几乎没有人玩NES游戏,但通过项目,我们可以看到如何用Golang编写一个模拟器,以及如何用Go模拟CPU和GPU。
5. go-echarts
- url: http://github.com/go-echarts/go-echarts
- star: 6.8k
- fork: 571
- watch: 97
echarts是应用非常广泛的数据可视化图形库,本项目是echarts的Golang接口,通过Golang生成相应图表。
实例代码如下:
// example.go
package main
import (
"log"
"math/rand"
"os"
"time"
"github.com/chenjiandongx/go-echarts/charts"
)
var nameItems = []string{"衬衫", "牛仔裤", "运动裤", "袜子", "冲锋衣", "羊毛衫"}
var seed = rand.NewSource(time.Now().UnixNano())
func randInt() []int {
cnt := len(nameItems)
r := make([]int, 0)
for i := 0; i < cnt; i++ {
r = append(r, int(seed.Int63()) % 50)
}
return r
}
func main() {
bar := charts.NewBar()
bar.SetGlobalOptions(charts.TitleOpts{Title: "Bar-示例图"}, charts.ToolboxOpts{Show: true})
bar.AddXAxis(nameItems).
AddYAxis("商家A", randInt()).
AddYAxis("商家B", randInt())
f, err := os.Create("bar.html")
if err != nil {
log.Println(err)
}
bar.Render(f)
}
6. Swaggo
- url : https://github.com/swaggo
从左到右,依次是swag,gin-swagger,echo-swagger,http-swagger。一般情况下,项目中引用都需要引用swag,其次根据你的框架需要,比如你的项目中使用的是gin或者echo,进入相关的模块。在这里我以echo为例。
一个是docs文件夹,一个是main.go文件,其实docs是自动生成的,main.go是官方给的使用例子。我们直接进去看看。
package main
import (
"github.com/labstack/echo/v4"
"github.com/swaggo/echo-swagger" //这里是需要引用的echo-swagger的包
_ "github.com/swaggo/echo-swagger/example/docs" // docs is generated by Swag CLI, you have to import it.
//这里的docs文件夹是上面刚刚说过的自动生成的文件,里面的主要是swagger生成好的接口文档
)
// @title Swagger Example API
// @version 1.0
// @description This is a sample server Petstore server.
// @termsOfService http://swagger.io/terms/
// @contact.name API Support
// @contact.url http://www.swagger.io/support
// @contact.email support@swagger.io
// @license.name Apache 2.0
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
// @host petstore.swagger.io
// @BasePath /v2
func main() {
e := echo.New()
e.GET("/swagger/*", echoSwagger.WrapHandler) //这里是必要的代码,否则是项目是运行不起来的
/*
Or can use EchoWrapHandler func with configurations.
url := echoSwagger.URL("http://localhost:1323/swagger/doc.json") //The url pointing to API definition
e.GET("/swagger/*", echoSwagger.EchoWrapHandler(url))
*/
//如果想要你的demo能跑起来,这上面的注释的代码得解开。因为要加载里面的文件
e.Logger.Fatal(e.Start(":1323"))
}
7. go-redis
- url: https://github.com/go-redis/red
一般开源的第三方工具源码都会有Doc和Examples这两个东西的,一个是文档,一个是使用例子,可以直接照着文档阅读或者敲代码,都是可行的,如果遇到了写的跑不起来,则直接去Examples这个文件里面找对应的例子跟着去操作。
这是文档,直接告诉你要引用包,怎么使用,代码都可以直接拿去粘贴复制,开箱即用。
这是Examples,每一个操作都会有例子给你看。