Go 오픈소스 라이브러리大全
일부 오픈소스 Go 서드파티 라이브러리와 프레임워크를 수집하여 분류 및 정리함으로써 이후에 쉽게 찾아볼 수 있도록 하며, 새로운 프로젝트를 추가하는 PR 제출도 환영합니다.
TIP
순서는 순위를 나타내지 않으며, 실제 사용 경험을 바탕으로 판단하시기 바랍니다.
Web 프레임워크
| 이름 | 설명 | 저장소 |
|---|---|---|
| gin | 가장 클래식한 web 프레임워크 | https://github.com/gin-gonic/gin |
| beego | 중국인이 개발한 web 프레임워크 | https://github.com/beego/beego |
| iris | 가장 빠르다고 주장하는 web 프레임워크 | https://github.com/kataras/iris |
| echo | 간결하고 고성능의 web 프레임워크 | https://github.com/labstack/echo |
| goji | 간결한 web 프레임워크 | https://github.com/zenazn/goji |
| revel | 고가용성 풀스택 web 프레임워크 | https://github.com/revel/revel |
| buffalo | 간단하게 풀스택 프로젝트를 구축할 수 있는 web 프레임워크 | https://github.com/gobuffalo/buffalo |
| hertz | 고성능과 높은 확장성을 갖춘 마이크로서비스 HTTP 프레임워크 (바이트댄스 오픈소스) | https://github.com/cloudwego/hertz |
| dotweb | 간단하고 경량인 web 프레임워크 | https://github.com/devfeel/dotweb |
| fiber | Node.js Express 스타일의 Web 프레임워크 | https://github.com/gofiber/fiber |
ORM
| 이름 | 설명 | 저장소 |
|---|---|---|
| gorm | 개발자 친화적인 ORM 라이브러리 | https://github.com/go-gorm/gorm |
| xorm | 간단하고 강력한 ORM | https://gitea.com/xorm/xorm |
| ent | Facebook 오픈소스 ORM | https://github.com/ent/ent |
| sqlx | sql 라이브러리의 강력한 확장 | https://github.com/jmoiron/sqlx |
| beego/orm | beego 내장 orm | https://github.com/astaxie/beego/tree/master/orm |
| rel | 확장 가능한 현대적 ORM | https://github.com/go-rel/rel |
| bun | SQL 우선의 ORM | https://github.com/uptrace/bun |
마이크로서비스 프레임워크
| 이름 | 설명 | 저장소 |
|---|---|---|
| kratos | 클라우드 네이티브 마이크로서비스 프레임워크 (Bilibili 오픈소스) | https://github.com/go-kratos/kratos |
| go-kit | 마이크로서비스 개발을 위한 도구 라이브러리 | https://github.com/go-kit/kit |
| kitex | 고성능과 높은 확장성을 갖춘 마이크로서비스 프레임워크 (바이트댄스 오픈소스) | https://github.com/cloudwego/kitex |
| go-zero | 클라우드 네이티브 마이크로서비스 프레임워크 (Qiniu Cloud 오픈소스) | https://github.com/zeromicro/go-zero |
| go-micro | 해외의 마이크로서비스 프레임워크 | https://github.com/go-micro/go-micro |
| kite | 마이크로서비스 프레임워크 (오래 업데이트되지 않음) | https://github.com/koding/kite |
| dubbo-go | Java dubbo 의 Go 구현 (알리바바 오픈소스) | https://github.com/apache/dubbo-go |
| tarsgo | tars 의 Go 구현 (텐센트 오픈소스) | https://github.com/TarsCloud/TarsGo |
| juptiers | 거버넌스 지향 마이크로서비스 프레임워크 (Douyu 오픈소스) | https://github.com/douyu/jupiter |
| redsync | redis 분산 락 | https://github.com/go-redsync/redsync |
이스터에그
Douyu 의 jupiter 는 제우스의 이름으로, 신들의 신이며, Bilibili 의 kratos 는 전신 크라토스의 이름으로, 크라토스는 나중에 신들의 신 제우스를 죽였습니다.
로그 컴포넌트
| 이름 | 설명 | 저장소 |
|---|---|---|
| logrus | 구조화된 로그 라이브러리 | https://github.com/sirupsen/logrus |
| zap | uber 오픈소스 고성능 로그 라이브러리 | https://github.com/uber-go/zap |
| glog | 등급별 실행 로그 | https://github.com/golang/glog |
| zerolog | 제로 메모리 할당 json 로그 | https://github.com/rs/zerolog |
| apex/log | 구조화된 로그 라이브러리 | https://github.com/apex/log |
| lumberjack | 로그 분할 라이브러리, 크기 분할, 날짜 분할, 파일 압축 지원 | https://github.com/natefinch/lumberjack |
테스트 컴포넌트
| 이름 | 설명 | 저장소 |
|---|---|---|
| testify | 가장 인기 있는 테스트 도구 패키지 | https://github.com/stretchr/testify |
| ginkgo | 현대적인 테스트 프레임워크 | https://github.com/onsi/ginkgo |
| ramsql | 메모리 기반 SQL 엔진, 주로 SQL 단위 테스트용 | https://github.com/proullon/ramsql |
| go-sqlmock | 테스트용 SQL Mock | https://github.com/DATA-DOG/go-sqlmock |
| goconvey | 브라우저에서 시각화 테스트 | https://github.com/smartystreets/goconvey |
| go-stress-testing | 부하 테스트 도구 | https://github.com/link1st/go-stress-testing |
| xgo | Go 스터빙 테스트 프레임워크, 컴파일 시점 코드 재작성을 통해 구현 | https://github.com/xhd2015/xgo |
| gomonkey | Go 스터빙 테스트 프레임워크, 함수 주소 수정을 통해 구현 | https://github.com/agiledragon/gomonkey |
데이터 처리
| 이름 | 설명 | 저장소 |
|---|---|---|
| mapstructure | map 과 구조체 상호 변환 | https://github.com/mitchellh/mapstructure |
| cast | 데이터 타입 변환을 간편하게 수행 | https://github.com/spf13/cast |
| deepcopy | 깊은 복사 | https://github.com/mohae/deepcopy |
| copier | 구조체 간 동일 이름 필드 값 복사 | https://github.com/jinzhu/copier |
| go-pinyin | 한자를 병음으로 변환 | https://github.com/mozillazg/go-pinyin |
| go-streams | 스트림 데이터 처리 | https://github.com/reugn/go-streams |
| stream | 스트림 처리 | https://github.com/xyctruth/stream |
| go-humanize | 데이터를 사람이 읽을 수 있는 형식으로 변환 | https://github.com/dustin/go-humanize |
| uniseg | Go 에서 Unicode 텍스트 분할, 단어 래핑 및 문자열 너비 계산 | https://github.com/rivo/uniseg |
데이터 검증
| 이름 | 설명 | 저장소 |
|---|---|---|
| go-playground/validator/v10 | 데이터 검증기 | https://github.com/go-playground/validator |
| go-cmp | 구글 오픈소스 값 비교 라이브러리 | https://github.com/google/go-cmp |
| ozzo-validation | 규칙 기반 데이터 검증 라이브러리 | https://github.com/go-ozzo/ozzo-validation |
| go-tagexpr | 구조체 tag 검증 라이브러리 | https://github.com/bytedance/go-tagexpr |
데이터 구조
| 이름 | 설명 | 저장소 |
|---|---|---|
| gods | 일반적인 데이터 구조 구현 | https://github.com/emirpasic/gods |
| go-datastructures | 일반적인 데이터 구조 구현 | https://github.com/Workiva/go-datastructures |
| biset | Go 에서 bitsets 구현 | https://github.com/bits-and-blooms/bitset |
| bloom | Go 에서 bloom filters 구현 | https://github.com/bits-and-blooms/bloom |
| deque | 고성능 양방향 큐 구현 | https://github.com/edwingeng/deque |
| concurrent-map | 동시성 안전 분할 map 구현 | https://github.com/orcaman/concurrent-map |
| samber/lo | Lodash 스타일 데이터 처리 라이브러리, 제네릭 지원 | https://github.com/samber/lo |
| google/btree | 구글 구현 BTree 라이브러리, 제네릭 지원 | https://github.com/google/btree |
| gostl | C++ STL 과 유사한 데이터 구조 라이브러리 | https://github.com/liyue201/gostl |
수학 계산
| 이름 | 설명 | 저장소 |
|---|---|---|
| gonum | numpy 와 유사 | https://github.com/gonum/gonum |
| decimal | 고정밀 부동소수점 연산 라이브러리 | https://github.com/shopspring/decimal |
| crunch | 바이트 및 비트 연산을 단순화하는 라이브러리 | https://github.com/superwhiskers/crunch |
| math-engine | 수학 식 파싱 계산 엔진 라이브러리 | https://github.com/dengsgo/math-engine |
템플릿 엔진
| 이름 | 설명 | 저장소 |
|---|---|---|
| pongo2 | Django 스타일 템플릿 엔진 | https://github.com/flosch/pongo2 |
| ace | html 템플릿 엔진 | https://github.com/yosssi/ace |
| mustache | mustache 의 Go 구현 | https://github.com/hoisie/mustache |
| hero | 기능이 강력하고 빠른 템플릿 엔진 | https://github.com/shiyanhui/hero |
| quictemplate | 이름에서 알 수 있듯이, 고성능 템플릿 엔진 | https://github.com/valyala/quicktemplate |
| amber | HAML 과 Jade 에서 유래한 템플릿 엔진 | https://github.com/eknkc/amber |
캐시 컴포넌트
| 이름 | 설명 | 저장소 |
|---|---|---|
| golang-lru | 스레드 안전 LRU 및 LRU 2Q 캐시 | https://github.com/hashicorp/golang-lru |
| ttlcache | 메모리 기반 캐시, TTL, 제네릭 지원 | https://github.com/jellydator/ttlcache |
| gocache | 캐시 미들웨어 관리자 | https://github.com/eko/gocache |
| go-cache | 메모리 기반 캐시, 단일 서버 애플리케이션용, TTL 지원 | https://github.com/patrickmn/go-cache |
| ristretto | 고성능 메모리 캐시 | https://github.com/dgraph-io/ristretto |
| bigcache | 메모리 기반 고효율 대용량 key 캐시 | https://github.com/allegro/bigcache |
데이터베이스&드라이버
직렬화
| 이름 | 설명 | 저장소 |
|---|---|---|
| go-ini | ini 파일 직렬화 라이브러리 | https://github.com/go-ini/ini |
| sonic | 바이트댄스 오픈소스 고성능 json 직렬화 라이브러리 | https://github.com/bytedance/sonic |
| easyjson | json 고속 직렬화 라이브러리 | https://github.com/mailru/easyjson |
| gjson | json 키 - 값 빠르게 가져오기, 비전통적 직렬화 라이브러리 | https://github.com/tidwall/gjson |
| go-yaml | yaml 직렬화 라이브러리 | https://github.com/go-yaml/yaml |
| go-toml | toml 직렬화 라이브러리 | https://github.com/pelletier/go-toml |
| properties | properties 직렬화 라이브러리 | https://github.com/magiconair/properties |
| viper | 여러 데이터 형식 직렬화 지원, 구성 관리자 역할도 함 | https://github.com/spf13/viper |
| configor | gorm 작성자가 작성한 여러 데이터 형식 직렬화기, 구성 관리자 | https://github.com/jinzhu/configor |
명령줄
| 이름 | 설명 | 저장소 |
|---|---|---|
| pflag | POSIX/GUN 스타일 flag 패키지 | https://github.com/spf13/pflag |
| go-flags | 명령 파라미터 파서 | https://github.com/jessevdk/go-flags |
| cobra | 현대적 명령줄 프로그램 구축 스캐폴딩 | https://github.com/spf13/cobra |
| dimiro1/banner | 미려한 banner 구축 라이브러리 | https://github.com/dimiro1/banner |
| go-pretty | 미려한 명령줄 테이블, 텍스트, 진행률 표시줄 출력 | https://github.com/jedib0t/go-pretty |
| progressbar | 스레드 안전 명령줄 진행률 표시줄 | https://github.com/schollz/progressbar |
| go-ansi | Go 언어용 Windows 휴대용 ANSI 이스케이프 시퀀스 유틸리티 | https://github.com/k0kubun/go-ansi |
| go-isatty | tty 판단 라이브러리 | https://github.com/mattn/go-isatty |
압축/압축 해제
| 이름 | 설명 | 저장소 |
|---|---|---|
| klauspost/compress | compress 표준 라이브러리 최적화 및 개선 | https://github.com/klauspost/compress |
| alexmullins/zip | archive/zip 표준 라이브러리 포크 브랜치, 비밀번호 지원 | https://github.com/alexmullins/zip |
| mholt/archiver | 많은 형식의 압축/압축 해제 도구 라이브러리 (개인적으로 매우 추천) | https://github.com/mholt/archiver |
| go-car | CAR 아카이브 파일의 Go 구현 | https://github.com/ipld/go-car |
| go-unarr | 압축/압축 해제 라이브러리 | https://github.com/gen2brain/go-unarr |
| xz | xz 압축 파일 읽기/쓰기를 위한 순수 Golang 라이브러리 | https://github.com/ulikunitz/xz |
날짜/시간
| 이름 | 설명 | 저장소 |
|---|---|---|
| carbon | 날짜/시간 처리 라이브러리 | https://github.com/golang-module/carbon |
| robfig/cron | 定时任务 라이브러리 | https://pkg.go.dev/github.com/robfig/cron/v3 |
| gron | 定时任务 라이브러리 | https://github.com/roylee0704/gron |
| jobrunner | 비동기定时任务 프레임워크 | https://github.com/bamzi/jobrunner |
| dataparse | 형식을 알 수 없는 경우에도 날짜 문자열 파싱 가능 | https://github.com/araddon/dateparse |
| jinzhu/now | 날짜 도구 라이브러리 | https://github.com/jinzhu/now |
의존성 주입
| 이름 | 설명 | 저장소 |
|---|---|---|
| dig | uber 오픈소스 의존성 주입 라이브러리, 리플렉션 기반 | https://darjun.github.io/2020/02/22/godailylib/dig/ |
| wire | 구글 오픈소스 의존성 주입 라이브러리, 코드 생성 기반 | https://github.com/google/wire |
| inject | 의존성 주입 도구 | https://github.com/codegangsta/inject |
| di | 의존성 주입 컨테이너 | https://github.com/sarulabs/di |
지리 위치
| 이름 | 설명 | 저장소 |
|---|---|---|
| geoip2-golang | IP 를 지리 정보로 변환 | https://github.com/oschwald/geoip2-golang |
| ip2location-go | IP 를 지리 정보로 변환 | https://github.com/ip2location/ip2location-go |
크롤링 프레임워크
| 이름 | 설명 | 저장소 |
|---|---|---|
| colly | 간단하고 강력한 크롤링 프레임워크 | https://github.com/gocolly/colly |
| goquery | j-query 와 유사 | https://github.com/PuerkitoBio/goquery |
네트워크 도구
| 이름 | 설명 | 저장소 |
|---|---|---|
| gentleman | 플러그인 기반, 확장 가능한 http 클라이언트 | https://github.com/h2non/gentleman |
| resty | restful http 클라이언트 | https://pkg.go.dev/github.com/go-resty/resty/v2 |
| gopeed | 모든 플랫폼을 지원하는 현대적 다운로드 관리자, Go 및 flutter 기반 | https://github.com/GopeedLab/gopeed |
이메일
| 이름 | 설명 | 저장소 |
|---|---|---|
| jordan-wright/email | 견고하고 유연한 이메일 발송 라이브러리 | https://github.com/jordan-wright/email |
| gomail | 이메일 발송 라이브러리 | https://github.com/go-gomail/gomail |
| go-simple-mail | 간단한 이메일 발송 라이브러리 | https://github.com/xhit/go-simple-mail |
| go-mail | 사용하기 쉽고 포괄적인 이메일 발송 라이브러리 | https://github.com/wneessen/go-mail |
| email-verifier | 이메일 유효성 검증, 이메일 발송 불필요 | https://github.com/AfterShip/email-verifier |
| maddy | 조합식 이메일 서버 | https://github.com/foxcpp/maddy |
| mox | 포괄적 오픈소스, 높은 유지보수성, 자체 호스팅 이메일 서버 엔드 | https://github.com/mjl-/mox |
| hermes | 이메일 템플릿 생성 라이브러리 | https://github.com/matcornic/hermes |
| listmonk | 고성능, 자체 호스팅, 시각화된 메일링 리스트 관리 | https://github.com/knadh/listmonk |
| go-smtp | Go 로 작성된 SMTP 클라이언트 및 서버 | https://github.com/emersion/go-smtp |
| go-imap | Go 로 작성된 IMAP 클라이언트 및 서버 | https://github.com/emersion/go-imap |
게임 개발
| 이름 | 설명 | 저장소 |
|---|---|---|
| ebitengine | 매우 간단한 2d 게임 엔진 | https://github.com/hajimehoshi/ebiten |
| Azul3D | Go 로 작성된 3d 게임 엔진 | https://github.com/azul3d/engine |
| engo | Go 로 작성된 오픈소스 2d 게임 엔진 | https://github.com/EngoEngine/engo |
| g3n/engine | go3d 게임 엔진 | https://github.com/g3n/engine |
| gonet | 게임 서버 프레임워크 | https://github.com/xtaci/gonet |
| leaf | 게임 서버 프레임워크 | https://github.com/name5566/leaf |
| cloud-game | 웹 기반 클라우드 게임 서비스 | https://github.com/giongto35/cloud-game |
GUI
| 이름 | 설명 | 저장소 |
|---|---|---|
| fyne | 크로스플랫폼 GUI 개발 도구상자 (정말 대단함) | https://github.com/fyne-io/fyne |
| go-flutter | Go 로 flutter 작성 | https://github.com/go-flutter-desktop/go-flutter |
| Wails | Go 의 빠르고 가벼운 Electron 대안으로 볼 수 있음 | https://github.com/wailsapp/wails |
시스템 상호작용
| 이름 | 설명 | 저장소 |
|---|---|---|
| gopsutil | 운영체제 정보 가져오기, 주요 시스템 호환 | https://github.com/shirou/gopsutil |
| flock | 운영체제 호출 기반 파일 락 | https://github.com/gofrs/flock |
| sys | 공식 운영체제 상호작용 라이브러리 | https://cs.opensource.google/go/x/sys |
크로스랭귀어 상호작용
| 이름 | 설명 | 저장소 |
|---|---|---|
| gopher-lua | Go 로 작성된 lua 가상머신 | https://github.com/yuin/gopher-lua |
| go-lua | Go 로 작성된 lua 가상머신 | https://github.com/Shopify/go-lua |
| goja | es5.1+ 지원 | https://github.com/dop251/goja |
| tengo | Tengo 는 작고, 동적이며, 빠르고, 안전한 Go 스크립트 언어 | https://github.com/d5/tengo |
| goby | ruby 에서 영감을 받아 Go 로 구현한 인터프리터 스크립트 언어 | https://github.com/goby-lang/goby |
| go+ | Qiniu Cloud 오픈소스 스크립트 언어, Go 와 원활하게 상호작용, Q 언어라고도 함 | https://github.com/goplus/gop |
| go-python | Go 에서 cpython2 호출 | https://github.com/sbinet/go-python |
| go-pytyon3 | Go 에서 cpython3 호출 | https://github.com/DataDog/go-python3 |
이미지 처리
| 이름 | 설명 | 저장소 |
|---|---|---|
| plot | 플롯 라이브러리, 주로 데이터 시각화용 | https://github.com/gonum/plot |
| gg | 2d 플롯 라이브러리 | https://github.com/fogleman/gg |
| gocv | opencv4+ 지원 | https://github.com/hybridgroup/gocv |
| imaging | 간단한 이미지 처리 라이브러리 | https://github.com/disintegration/imaging |
텍스트 처리
| 이름 | 설명 | 저장소 |
|---|---|---|
| vale | 문법 인식 텍스트 교정 도구 | https://github.com/errata-ai/vale |
인증/인가
| 이름 | 설명 | 저장소 |
|---|---|---|
| casbin | 유연하고 강력한 권한 관리 라이브러리 | https://github.com/casbin/casbin |
| openfga | 고성능 권한/인가 라이브러리, Google Zanzibar 에서 유래 | https://github.com/openfga/openfga |
코드 생성
| 이름 | 설명 | 저장소 |
|---|---|---|
| jennifer | 코드 생성 라이브러리 | https://github.com/dave/jennifer |
정규식 처리
| 이름 | 설명 | 저장소 |
|---|---|---|
| commonregx | 일반적인 정규식 모음 라이브러리 | https://github.com/mingrammer/commonregex |
파일 처리
| 이름 | 설명 | 저장소 |
|---|---|---|
| filebox | 파일 조작 도구 라이브러리 | https://github.com/dstgo/filebox |
| size | 파일 크기와 문자열 간 변환 빠르게 수행 | https://github.com/dstgo/size |
| checksum | 파일 해시 서명 계산 라이브러리 | https://github.com/codingsince1985/checksum |
| pdfcpu | pdf 처리기 | https://github.com/pdfcpu/pdfcpu |
| unioffice | office 처리 라이브러리 | https://github.com/unidoc/unioffice |
| gooxml | office 처리 라이브러리 | https://github.com/carmel/gooxml |
| pdfcpu | PDF 처리 라이브러리 | https://github.com/pdfcpu/pdfcpu |
| excelize | Excel 처리 라이브러리 | https://github.com/360EntSecGroup-Skylar/excelize |
유틸리티
| 이름 | 설명 | 저장소 |
|---|---|---|
| lancet | 다목적 도구 라이브러리, Java 의 common 패키지와 유사 | https://github.com/duke-git/lancet |
| bytebufferpool | 바이트 버퍼 풀 | https://github.com/valyala/bytebufferpool |
개발 프레임워크
| 이름 | 설명 | 저장소 |
|---|---|---|
| goframe | 현대 기업급 Go 개발 프레임워크 | https://github.com/gogf/gf |
합의 프로토콜
| 이름 | 설명 | 저장소 |
|---|---|---|
| hashicorp/raft | consul 오픈소스 raft 라이브러리 | https://github.com/hashicorp/raft |
| hashicorp/memberlist | consul 오픈소스 gossip 라이브러리 | https://github.com/hashicorp/memberlist |
| etcd-io/raft | etcd 오픈소스 raft 라이브러리 | https://github.com/etcd-io/raft |
OCR
| 이름 | 설명 | 저장소 |
|---|---|---|
| gosseract | Tesseract C++ 라이브러리를 사용한 OCR 라이브러리 | https://github.com/otiai10/gosseract |
