Skip to content
Hanlei Qin edited this page Jun 16, 2025 · 67 revisions

Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.

Learn

quick start

other topics

standard & style

  • Effective Go - 中英双语版
  • Go Code Review Comments: This page collects common comments made during reviews of Go code, so that a single detailed explanation can be referred to by shorthands. This is a laundry list of common mistakes, not a comprehensive style guide.
  • Go-advices List of advices and tricks for Go ʕ◔ϖ◔ʔ
  • uber-go/guide The Uber Go Style Guide.

books

internal

Libraries

  • Gorilla Web Toolkit, Gorilla is a web toolkit for the Go programming language that provides useful, composable packages for writing HTTP-based applications.
  • GopherJS compiles Go code (golang.org) to pure JavaScript code. Its main purpose is to give you the opportunity to write front-end code in Go which will still run in all browsers.
  • torrent-client Tiny BitTorrent client written in Go. Read the blog post: https://blog.jse.li/posts/torrent/
  • errors: Simple error handling primitives
  • go-lua is a port of the Lua 5.2 VM to pure Go. It is compatible with binary files dumped by luac, from the Lua reference implementation.
  • LogrusLogrus is a structured logger for Go (golang), completely API compatible with the standard library logger.

Frameworks

  • gogf/gf GoFrame is a modular, full-featured and production-ready application development framework of golang. Providing a series of core components and dozens of practical modules, such as: cache, logging, containers, timer, resource, validator, database orm, etc. Supporting web server integrated with router, cookie, session, middleware, logger, configu… https://goframe.org
  • ray A fast and simple framework for building and running distributed applications. Ray is packaged with RLlib, a scalable reinforcement learning library, and Tune, a scalable hyperparameter tuning library. https://ray.io
  • go-micro A Go microservices development framework https://go-micro.dev
  • ⚡ Go web framework benchmark
  • beego is used for rapid development of RESTful APIs, web apps and backend services in Go. It is inspired by Tornado, Sinatra and Flask. beego has some Go-specific features such as interfaces and struct embedding.
  • gin is a web framework written in Go (Golang). It features a martini-like API with performance that is up to 40 times faster thanks to httprouter. If you need performance and good productivity, you will love Gin.
  • Fiber is an Express inspired web framework built on top of Fasthttp, the fastest HTTP engine for Go. Designed to ease things up for fast development with zero memory allocation and performance in mind.
  • iris is a fast, simple yet fully featured and very efficient web framework for Go.
  • pixel A hand-crafted 2D game library in Go
  • ebiten A dead simple 2D game library in Go https://ebiten.org/
    • gozelda An implementation of a GameBoy era zelda game using Go and Ebiten
  • Korok is a free lightweight, cross-platform, component-based 2D game engine written in Golang and released under the zlib license. Greatly inspired by bitsquid blog.
  • oak A pure Go game engine
  • G3N (pronounced "gen") is an OpenGL 3D Game Engine written in Go. It can be used to write cross-platform Go applications that show rich and dynamic 3D representations - not just games. A basic integrated GUI framework is provided, and 3D spatial audio is supported through OpenAL.
  • agones, open match
  • Pitaya is an simple, fast and lightweight game server framework with clustering support and client libraries for iOS, Android, Unity and others through the C SDK. It provides a basic development framework for distributed multiplayer games and server-side applications.
  • Nakama: Distributed server for social and realtime games and apps.
  • goworld: Scalable Distributed Game Server Engine with Hot Reload in Golang
  • leaf: A pragmatic game server framework in Go (golang).
  • Nano is an easy to use, fast, lightweight game server networking library for Go.
  • gonet - deprecated, gonet2 - inactive

Tools

FAQs

  • 发行闭源go包的办法:http://www.golangtc.com/t/540eaa6e320b527a3b000161
    • 主要思想是将.a和.go文件放在GOROOT下冒充系统库,因为系统库不会主动编译。
    • 但其中要注意,.go文件必须定义外部使用的接口,即大写开头的变量和方法,内容可以为空。
  • 交叉编译go目标代码举例:
    > CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/main src/main/main.go
    
    • 其中参数可选:
      OS ARCH OS version
      linux 386 / amd64 / arm >= Linux 2.6
      darwin 386 / amd64 OS X
      freebsd 386 / amd64 >= FreeBSD 7
      windows 386 / amd64 >= Windows 2000
      
  • 为什么 Go 语言没有泛型

Resources

Clone this wiki locally