下拉刷新
Go 项目

这里是按照「分类」阅读往期的 HelloGitHub 月刊内容, 您目前在查看 HelloGitHub Go 项目 集合。

171
btree
Star 4.2k
Vol.81
2 年前

Go 语言实现的 B-树 数据结构。由谷歌开源的 B-树 Go 语言实现,代码整洁、注释丰富,推荐阅读源码。B-树 这种数据结构,能够让查找数据、顺序访问、插入及删除操作,都在对数时间内完成,多用于数据库和文件系统。

172
nap
Star 2.2k
Vol.81
2 年前

一款命令行的代码片段管理工具。该项目可以通过命令行界面,快速创建和管理代码片段。支持快捷键、搜索、代码高亮、自定义颜色等功能,操作简单方便。

nap
Star 2.2w
Vol.81
1 天前

适用于多种 shell 的终端提示个性化工具。该项目内置多款主题开箱即用,支持 Windows、Linux、macOS 三个系统上的 PowerShell、Bash、Zsh 等多种 shell,自动补全你输入的每个命令。

oh-my-posh
174
raft
Star 9k
Vol.81
11 天前

Raft 算法的 Go 语言实现。Raft 是一种分布式一致性算法(共识算法),常用于分布式集群内的任意节点,在某种状态转换上保持一致。

175
cadvisor
Star 1.9w
Vol.80
15 天前

一款由 Google 开源的容器监控工具。它可以实时统计容器运行时占用的资源,包括 CPU 利用率、内存使用量、网络传输等信息。提供了 Web 可视化页面,能方便用户分析和监控容器运行状态,支持包括 Docker 在内的几乎所有类型的容器。

sudo docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  --privileged \
  --device=/dev/kmsg \
  gcr.io/cadvisor/cadvisor:$VERSION
cadvisor
176
dsq
Star 3.9k
Vol.80
3 年前

可直接用 SQL 查询数据文件的命令行工具。通过该项目无需将数据导入数据库,就能用 SQL 查询文件内的数据,可执行模糊查询、计数、排序等命令,支持 JSON、CSV、Excel、Parquet、YAML 等类型的文件。还可以搭配其它命令行工具(jq),实现更丰富的功能。

$ dsq testdata/userdata.parquet 'select count(*) from {}' | jq
[
  {
    "count(*)": 1000
  }
]
Star 4.6k
Vol.80
2 年前

立刻将 JSON 转化为 Go 类型定义的工具。这是一个用 JavaScript 写的在线小工具,可以直接将输入的 JSON 转成对应的 Go 类型定义。

json-to-go
Star 5.7w
Vol.80
14 小时前

仅一个文件的开源后端。将 SQLite 数据库、接口服务、登录认证、管理后台等服务器端的功能,做成一个开箱即用的可执行文件。让原本不懂后端开发的用户,也可以通过用户界面快速构建起接口服务。

pocketbase
Star 4.2k
Vol.80
10 个月前

用 Go 重新实现的 supervisord 。开源项目 supervisord 作为 Python 项目中常用的进程管理工具,深受广大开发爱好者的喜欢。但如果在非 Python 环境的情况下,用起来就不是那么顺手啦,所以作者用 Go 重写了 supervisord,编译后可以方便地运行在任何环境下。

$ cat supervisor.conf
[program:test]
command = /your/program args
$ supervisord -c supervisor.conf
supervisord
180
env
Star 6.1k
Vol.79
2 天前

用于解析环境变量的 Go 语言库。一般情况下项目启动时需要的配置参数,都是通过环境变量传递的。该项目就是 Go 语言用来解析环境变量的库,它简单、体积小、零依赖。

package main

import (
	"fmt"
	"time"

	"github.com/caarlos0/env/v6"
)

type config struct {
	Home         string        `env:"HOME"`
	Port         int           `env:"PORT" envDefault:"3000"`
	Password     string        `env:"PASSWORD,unset"`
	IsProduction bool          `env:"PRODUCTION"`
	Hosts        []string      `env:"HOSTS" envSeparator:":"`
	Duration     time.Duration `env:"DURATION"`
	TempFolder   string        `env:"TEMP_FOLDER" envDefault:"${HOME}/tmp" envExpand:"true"`
}

func main() {
	cfg := config{}
	if err := env.Parse(&cfg); err != nil {
		fmt.Printf("%+v\n", err)
	}

	fmt.Printf("%+v\n", cfg)
}