golang - doubility-sky/daydayup GitHub Wiki

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

  • :star:The Go Programming Language - zh-CN, by gopl-zh
  • Go Web 编程: A golang ebook intro how to build a web with golang
  • go-perfbook - zh-CN This document outlines best practices for writing high-performance Go code. The first sections cover writing optimized code in any language. The later sections cover Go-specific techniques.
  • Go 语言高性能编程: high performance coding with golang(Go 语言高性能编程,Go 语言陷阱,Gotchas,Traps)

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

web

  • 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.
  • iris is a fast, simple yet fully featured and very efficient web framework for Go.

Game-Development

game-client

  • 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.

game-server

  • 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