Convert Figma logo to code with AI

0voice logoIntroduction-to-Golang

【未来服务器端编程语言】最全空降golang资料补给包(满血战斗),包含文章,书籍,作者论文,理论分析,开源框架,云原生,大佬视频,大厂实战分享ppt

7,587
1,854
7,587
5

Top Related Projects

122,720

The Go programming language

128,386

A curated list of awesome Go frameworks, libraries and software

Curated list of project-based tutorials

Learn Go with test-driven development

18,744

❤️ 1000+ Hand-Crafted Go Examples, Exercises, and Quizzes. 🚀 Learn Go by fixing 1000+ tiny programs.

Training for Golang (go language)

Quick Overview

The "Introduction-to-Golang" repository by 0voice is a comprehensive resource for learning the Go programming language. It provides a curated collection of tutorials, articles, and resources aimed at helping beginners and intermediate developers understand and master Go.

Pros

  • Extensive collection of learning materials covering various aspects of Go
  • Well-organized content structure, making it easy to navigate and find specific topics
  • Regularly updated with new resources and information
  • Includes both beginner-friendly and more advanced topics

Cons

  • Primarily in Chinese, which may limit accessibility for non-Chinese speakers
  • Some links may become outdated over time
  • Lacks interactive coding exercises or hands-on projects
  • May overwhelm beginners with the sheer amount of information

Code Examples

As this is not a code library but rather a collection of learning resources, there are no specific code examples to provide. The repository itself contains links to various tutorials and articles that include code examples, but these are not directly part of the repository's content.

Getting Started

Since this is not a code library, there's no specific installation or setup process. To get started with the "Introduction-to-Golang" repository:

  1. Visit the repository at https://github.com/0voice/Introduction-to-Golang
  2. Browse through the README.md file to find topics of interest
  3. Click on the links provided to access tutorials, articles, and resources
  4. Consider starring or watching the repository to stay updated with new additions

Note: Knowledge of Chinese is beneficial for fully utilizing this resource, as much of the content is in Chinese.

Competitor Comparisons

122,720

The Go programming language

Pros of go

  • Official Go language repository with comprehensive documentation and source code
  • Actively maintained by the Go team with frequent updates and bug fixes
  • Includes the complete Go toolchain, standard library, and runtime

Cons of go

  • Large repository size, which may be overwhelming for beginners
  • Focuses on language implementation rather than learning resources
  • Requires more technical knowledge to navigate and understand

Code comparison

Introduction-to-Golang:

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

go:

// src/runtime/proc.go
func main() {
    g := getg()
    // ...
    fn := main_main
    fn()
    // ...
}

Summary

Introduction-to-Golang is a curated collection of Go learning resources, making it ideal for beginners. It offers a structured approach to learning Go with various tutorials, articles, and examples.

go is the official Go language repository, containing the complete Go implementation, toolchain, and standard library. It's more suitable for experienced developers and those interested in the language's internals.

While Introduction-to-Golang focuses on educational content, go provides the actual language implementation and tools. Beginners may find Introduction-to-Golang more accessible, while advanced users might prefer go for its comprehensive codebase and direct involvement in language development.

128,386

A curated list of awesome Go frameworks, libraries and software

Pros of awesome-go

  • Comprehensive list of Go resources, libraries, and tools
  • Well-organized into categories for easy navigation
  • Regularly updated with community contributions

Cons of awesome-go

  • Lacks in-depth explanations or tutorials for beginners
  • May be overwhelming due to the sheer volume of information

Code comparison

Not applicable, as both repositories primarily contain curated lists and resources rather than code samples.

Summary

awesome-go is a extensive collection of Go-related resources, offering a wide range of tools, libraries, and frameworks for developers. It's well-maintained and frequently updated, making it an excellent reference for both beginners and experienced Go programmers.

Introduction-to-Golang, on the other hand, focuses on providing a structured learning path for beginners. It includes tutorials, articles, and resources specifically tailored to help newcomers understand Go programming concepts.

While awesome-go excels in breadth and comprehensiveness, Introduction-to-Golang offers a more guided approach to learning Go. The choice between the two depends on the user's needs: those seeking a vast array of resources and tools would benefit from awesome-go, while beginners looking for a structured introduction to Go might prefer Introduction-to-Golang.

Both repositories serve valuable purposes in the Go community, catering to different aspects of learning and working with the language.

Curated list of project-based tutorials

Pros of project-based-learning

  • Covers a wide range of programming languages and technologies, not limited to Go
  • Provides hands-on projects for practical learning across various domains
  • Regularly updated with new projects and resources

Cons of project-based-learning

  • Less focused on Go-specific content compared to Introduction-to-Golang
  • May lack the depth of Go-specific tutorials and resources
  • Could be overwhelming for beginners due to the vast array of options

Code Comparison

While a direct code comparison is not relevant due to the nature of these repositories, here's an example of how they might differ in presenting Go-related content:

Introduction-to-Golang:

package main

import "fmt"

func main() {
    fmt.Println("Hello, Go!")
}

project-based-learning (Go section):

## Go

- [Build a Simple Web Server](https://example.com/go-web-server)
- [Create a RESTful API](https://example.com/go-rest-api)
- [Develop a CLI Tool](https://example.com/go-cli-tool)

The Introduction-to-Golang repository focuses specifically on Go programming with code examples, while project-based-learning provides links to various Go projects without directly including code snippets.

Learn Go with test-driven development

Pros of learn-go-with-tests

  • Focuses on test-driven development (TDD) approach
  • Provides hands-on exercises with step-by-step explanations
  • Covers advanced topics like concurrency and property-based testing

Cons of learn-go-with-tests

  • May be challenging for absolute beginners
  • Primarily text-based content, lacking visual aids or videos
  • Covers fewer topics compared to Introduction-to-Golang

Code Comparison

learn-go-with-tests:

func TestHello(t *testing.T) {
    got := Hello("Chris")
    want := "Hello, Chris"
    if got != want {
        t.Errorf("got %q want %q", got, want)
    }
}

Introduction-to-Golang:

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

The code comparison shows that learn-go-with-tests emphasizes writing tests alongside the main code, while Introduction-to-Golang focuses on basic syntax and concepts. learn-go-with-tests encourages a more robust development approach, but may be more complex for beginners. Introduction-to-Golang provides a simpler entry point but may not instill best practices from the start.

18,744

❤️ 1000+ Hand-Crafted Go Examples, Exercises, and Quizzes. 🚀 Learn Go by fixing 1000+ tiny programs.

Pros of learngo

  • More structured and comprehensive learning path with organized chapters and exercises
  • Interactive coding exercises with hands-on practice
  • Regular updates and maintenance, ensuring up-to-date content

Cons of learngo

  • Primarily focused on beginners, may lack advanced topics
  • English-only content, potentially limiting accessibility for non-English speakers

Code Comparison

learngo:

package main

import "fmt"

func main() {
    fmt.Println("Hello, Gopher!")
}

Introduction-to-Golang:

package main

import "fmt"

func main() {
    fmt.Println("你好,Go语言!")
}

The code examples demonstrate a basic "Hello World" program in both repositories. The main difference is that Introduction-to-Golang uses Chinese characters in its output, reflecting its focus on Chinese-speaking learners.

learngo provides a more structured approach to learning Go, with interactive exercises and a well-organized curriculum. It's particularly suitable for beginners and those who prefer a hands-on learning experience. However, it may not cover advanced topics as extensively as Introduction-to-Golang.

Introduction-to-Golang offers a broader range of topics and resources, including more advanced concepts. It also caters to Chinese-speaking learners, which can be advantageous for non-English speakers. However, it may lack the interactive elements and structured learning path found in learngo.

Training for Golang (go language)

Pros of GolangTraining

  • More comprehensive coverage of Go concepts and features
  • Includes practical exercises and examples for hands-on learning
  • Regularly updated with new content and improvements

Cons of GolangTraining

  • Less structured organization compared to Introduction-to-Golang
  • May be overwhelming for absolute beginners due to its extensive content
  • Lacks a clear progression path for learners

Code Comparison

Introduction-to-Golang:

package main

import "fmt"

func main() {
    fmt.Println("Hello, 世界")
}

GolangTraining:

package main

import "fmt"

func main() {
    fmt.Println("Hello World!")
    foo()
}

func foo() {
    fmt.Println("I'm in foo")
}

GolangTraining provides more complex examples and functions, demonstrating practical usage of Go concepts. Introduction-to-Golang focuses on simpler, foundational examples to introduce basic syntax and concepts.

Both repositories offer valuable resources for learning Go, with Introduction-to-Golang providing a more structured approach for beginners, while GolangTraining offers a deeper dive into advanced topics and practical applications. The choice between the two depends on the learner's experience level and learning style preferences.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

👏👏👏最全空降Golang资料补给包(满血战斗),包含文章,书籍,作者论文,理论分析,开源框架,云原生,大佬视频,大厂实战分享ppt


📣【今日推荐阅读】Go自带库的使用说明

🔠【还不会入门,找我】Go语言基础语法宝典

🗡【一册在手,天下我有】Go 语言参考手册

🤔【导图辅助,有如神助】Golang 入门笔记(pdf版下载)

🧑‍🤝‍🧑 Rob Pike谈Google Go

Google · Go语言之父

1. Rob,你创建了Google Go这门语言。什么是Google Go?能简明扼要的介绍一下Google Go吗?
2. Go的主要特点是什么?有什么重要功能?
3. 在我们继续话题之前,能否解释一下为什么Go编译器能达到那么快的编译速度呢?有什么法宝?
4. 让我们开始聊聊Go里的类型系统吧。Go里面有结构(struct)、有类型(type),那么Go里的类型是什么?
5. 那么这些方法只是在包内部可见喽?
6. 你的意思是,我可以给int增加方法,但是必须先使用typedef吗?
7. 你们借鉴了Ruby里开放类的思想,这很有意思。Ruby的开放类实际上是可以修改类并增加新的方法,这是有破坏性的,但是你们的方法本质上是安全的,因为创建了新的东西。
8. 你还提到了typedef,是叫typedef吧?
9. Typedef在C里是一种预处理指令吗?【编辑注/免责申明:C语言里的typedef与预处理无关】
10. 我们从底层说起吧,在Go里最小的类型是什么?
11. 但是,int这样的类型是值类型对吧.
12. 它们类似C++的引用吗?
13. 它是结构内部一个复合对象。
14. 你提到过接口比较有趣,那下面咱们就谈谈这一部分。
15. 某种程度上有点类似结构化类型系统(structural typing)
16. 你提到过类,但Go没有类,对吧。
17. 但是没有类怎么去写代码?
18. 如果我有一些行为要实现,而且想放在多个structs里,怎么去共享这些行为?
19. 如果有多重继承命名冲突的问题该怎么办?
20. 因为系统中没有根对象或根类,如果我想得到一个拥有不同类型的结构的列表,应该怎么办?
21. Go里有叫做Goroutines的东西,它们和coroutines有什么区别?不一样么?
22. 你提到你们使用了m:n线程模型,即m个coroutines映射到n个线程上?
23. Goroutines有用于通信的通道吗?
24. 你提到你们有缓存的同步通道和异步通道。
25. 每个Goroutine就像是一个小的线程,可以这么给读者解释吧。
26. 它们是轻量级的。但是每个线程同样都预分配栈空间,因而它们非常耗费资,Goroutines是怎么处理的呢?
27. 我们再来谈谈自动化方面的东西,最初你们是将Go语言作为系统级语言来推广的,一个有趣的选择是使用了垃圾回收器,但是它速度并不快或者说有垃圾回收间歇问题,如果用它写一个操作系统的话,这是非常烦人的。你们是怎么看这一问题的?
28. 有没有方法能够避免直面垃圾回收器,比如用一些大容量缓存,我们可以把数据扔进去。
29. 最后一个问题:Go是系统级语言还是应用级语言?

📚 资料包

128686978-0d16ca8a-d070-4c3b-a4d9-640b265acc8d


📕 书籍

入门

《Go 入门指南》

《Go语言101》

《Go语言趣学指南》

《Go语言从入门到进阶实战》

《Go语言学习笔记》

《Go语言入门经典》:hdcy

《Go语言编程》

《Go语言实战》

《Go Web 编程》

《Go语言编程入门与实战技巧》:sgro

进阶

《Go 语言圣经》

《Go专家编程》

《Go 语法树入门》

《Go语言程序设计》:flnj

《Go语言高级编程》

《Go语言核心编程》:v9fl

《Go语言高并发与微服务实战》

《Go并发编程实战》第2版:lsn0

《Go语言并发之道》:6ppw


📖 文章

当红开发语言Go,真的是未来的技术主流吗?

Go语言之goroutine协程详解

Golang之sync.Pool对象池对象重用机制总结

Golang的GC和内存逃逸

GO语言之垃圾回收机制

Go内存分配那些事,就这么简单

Go语言TCP Socket编程

从源码角度看 Golang 的调度

Protobuf入门

etcd的使用

深入理解 Go Map

用go实现常见的数据结构

Go 程序是怎样跑起来的

go内存管理一:系统内存管理

go内存管理二:go内存管理

图解Go内存分配器

Go常用命令


💽 视频


titleLink
【golang云原生】 golang实现行程码、健康码识别点击观看
【golang云原生】 golang 实现ping网络指令点击观看
【golang云原生】golang 借助公有云实现点播转直播点击观看
【golang云原生】如何使用gin框架构建web项目脚手架点击观看
【golang云原生】 为什么jwt会被广泛应用点击观看
【golang云原生】 golang实现生产者消费者模式点击观看
【golang云原生】 go语言UDP网络编程之发送DNS请求点击观看
【golang云原生】 go语言快速实现一个web互动直播(一)点击观看
【golang云原生】go语言快速实现一个web互动直播(二)点击观看
【golang云原生】golang实现文件上传到对象存储点击观看
【golang云原生】论一款强大的验证组件在web开发中的重要性点击观看
【golang云原生】golang配合公有云实现机器人流量的拦截点击观看
【golang云原生】golang面试题实现一个内存缓存系统点击观看
【golang云原生】最受欢迎的开源日志框架logrus实战应用点击观看
【golang云原生】基于公有云快速实现邮件推送点击观看

🏗 开源项目(段位纯属分类管理,不分先后)

王者段位

项目简介
docker无人不知的虚拟化平台,开源的应用容器引擎,借助该引擎,开发者可以打包他们的应用,移植到任何平台上。
golanggo本身,也是用go语言实现的,包括他的编译器,要研究go源代码的可以看此项目录
kubernetesGoogle出品,用于调度和管理docker的开源容器管理系统,利用他,可以方便的管理你的docker实例,哪怕非常多,也是目前最流行的docker管理系统。
gogs一款基于git的代码托管系统,类似于github和gitlab,不过其小巧易用,功能强大,部署方便,也有不少用户在使用。
syncthing开源的文件同步系统,它使用了其独有的对等自由块交换协议,速度很快,据说可以替换BitTorrent Sync。
grafana一款开源监控度量的看板系统,可以接Graphite、Elasticsearch、InfluxDB等数据源,定制化很高。
etcd一款分布式的,可靠的K-V存储系统,使用简单,速度快,又安全。
hub一款更便捷使用github的工具,包装并且扩展了git,提供了很多特性和功能,使用和git差不多。
influxdb可伸缩的数据库,使用场景主要用来存储测量数据,事件点击以及其他等实时分析数据,用来做监控性能很不错。
caddy快速的,跨平台的HTTP/2 Web服务器。
beego国产开源的高性能Web框架,让你快速的开发Go Web应用服务,谢大主笔。
martini也是一款不错的Web框架。
cayleyGoogle开源的图数据库,这是一个NoSql数据库,适合处理复杂的,但是结构化低的数据,适用于社交网络,推荐系统等。
nsq一款开源的实时的,分布式的消息中间件系统。
codisCodis是一个分布式Redis解决方案,其实就是一个数据库代理,让你在使用Redis集群的时候,就像使用单机版的Redis是一样的,对开发者透明。
delve这个Go开发者都知道,一款go应用开发的调试工具。
cobracobra是一个命令行go库,可以让你创建非常强大的,现代的CLI命令行应用。
megaease/easegress云本地流量编排系统

大师段位

项目简介
ViperViper 是一个完整的 Go 应用配置解决方案。
echo高性能、极简主义的 Go Web 框架
uber-go/fx一个基于依赖注入的 Go 应用框架。
Swagger生成器、UI 和验证
LogrusLogrus 是一个适用于 Go(golang) 的结构化记录器,与标准库记录器完全 API 兼容。
mockeryGolang 的模拟代码自动生成器
migrate用 Go 编写的数据库迁移。作为 CLI 使用或作为库导入。
NSQ消息传递
sqlxsqlx 是一个库,它在 Go 的标准 database/sql 库上提供了一组扩展。
Macaron一款具有高生产力和模块化设计的 Go Web 框架
Gin轻量 Web 框架
zinxTCP并发服务器框架
NegroniWeb 中间件
csrfCSRF 中间件
handlersGo的net/http包的有用处理程序集合
SizedWaitGroup并发控制
concurrent并发工具包
grab文件下载
go-netty网络框架

钻石段位

项目简介
gorilla/websocketGo的一个快速、经过良好测试和广泛使用的WebSocket实现。
nhooyr/websocket 常用的Go WebSocket库
websocketdGo 开发的一键搭建 WebSocket 服务器命令行工具
wsWebSocket 开发包
melodyWebSocket 服务框架
neffos一个现代的、快速的、可扩展的websocket框架,带有优雅的Go API
fastwsfastttp和net/http的快速WebSocket实现。默认支持并发读写操作。
Centrifugo实时消息服务器,可以与任何语言编写的应用程序后端结合使用
goim支持集群的 im 及实时推送服务
Tinode即时消息服务器,通过 websocket/JSON 或 gRPC/TCP 等协议传输
WebRTCWebRTC 实现
Berty安全的点对点通讯软件
Keybase即时通讯工具 Keybase 全平台客户端
golang/protobufGo 版本的 Protocol Buffers
gogo/protobufgolang/protobuf 的扩展替代品
Objx操作 map、slice、JSON 等数据的包
gorilla/rpc构建基于 HTTP 的 RPC 服务,比如 JSON-RPC
Twirp基于 Protobuf 的 RPC 框架,与 gRPC 类似

铂金段位

项目简介
dubbo-goApache Dubbo Go 语言实现,架起 Java 和 Golang 之间的桥梁,与 gRPC/Spring Cloud 生态互联互通,带领 Java 生态享受云原生时代的技术红利
NSQ实时分布式消息平台
NATS云原生消息中间件
saramaKafka 客户端
InfluxDB时间序列数据库
Thanos支持 Prometheus 简化部署、高可用、分布式存储
CockroachDB分布式 SQL 数据库
RadonDB基于 MySQL 研发的新一代分布式关系型数据库
TiDB分布式关系型数据库,兼容 MySQL 协议
AresDBUber 开源的 GPU 驱动的实时分析存储&查询引擎
leveldbLevelDB 的 Go 实现
GCachegolang的内存缓存库。支持多种驱逐政策:LRU、LFU、ARC
go-cacheGo的内存键:值存储/缓存(类似于Memcached)库,适用于单机应用程序。
groupcache分布式缓存
cachego支持 Redis、Bolt 等缓存接口
go-tagexpr字节跳动开源的结构体标签表达式解释器
goavFFmpeg 视频处理
rosedb基于 bitcask 的 k-v 存储模型,高效、快速、简洁

🖼 大厂实战分享ppt


📄 论文与理论分析

TitleTranslation(参考)Company
《Acme: A User Interface for Programmers》程序员的用户界面AT&T,贝尔实验室
《Understanding Real-World Concurrency Bugs in Go》了解真实go中的并发bug宾夕法尼亚州立大学
《A Formal Model of the Kubernetes Container Framework》Kubernetes容器框架的形式化模型奥斯陆大学
《Running Cloud Native Applications on DigitalOcean Kubernetes》在DigitalOcean Kubernetes上运行云本地应用未知
《Kubernetes as an Availability Manager for Microservice Applications》Kubernetes作为微服务应用程序的可用性管理器康科迪亚大学
《Borg, Omega, and Kubernetes》Borg、Omega 和 KubernetesGOOGLE
《A Raft-based HTAP Database》基于raft的HTAP数据库VLDB基金会论文集
《For Reproducible Environments and Containerized Applications》用于可复制环境和容器化应用程序圣克劳德州立大学
《Escape from Escape Analysis of Golang》golang逃离分析清华大学
《Using gRPC with Go》在Go中使用gRPC未知

☁ 云原生

这里我们讲云原生,主要目的是为了大家如何利用云原生技术,快速地使用go语言开发。而不是研究云原生本身的技术。

我们以腾讯云为例,列举腾讯云为我们提供的云原生接口项目:(列举部分我们常见的)

  • 实时音视频
    • 混流转码
    • 房间管理
    • 其他接口
    • 通话质量监控
  • 云点播
    • 视频处理
    • 参数模板
    • 其他接口
    • 任务流
    • 分发
    • 媒资管理
    • 视频上传
    • 事件通知
    • AI 样本管理
    • 视频分类
    • 任务管理
    • 域名管理
    • 数据统计
  • 视频处理
    • 视频处理
    • 工作流管理
    • 其他接口
    • 解析事件通知
    • AI 样本管理
    • 参数模板
    • 任务管理
  • 腾讯云剪
    • 平台管理
    • 项目管理
    • SaaS 平台管理
    • Headless媒体合成
    • 任务管理
    • 视频编辑项目
    • 媒体资源管理
    • 媒资授权
    • 团队管理
    • 分类管理
    • 登录态管理
    • 其他接口
  • 智能编辑
    • 画质重生任务
    • 媒体质检任务
    • 编辑理解
    • 编辑处理
  • 即时通信 IM
    • 获取云通信 IM 的 SDKAppid
  • 短信
    • 短信统计
    • 发送短信
    • 拉取状态
    • 短信模板
    • 短信签名
  • 分布式消息队列
    • 集群
    • 命名空间
    • 主题
    • 消息
    • CMQ管理
    • CMQ消息
    • 其他接口
    • 生产消费
  • 消息队列 Ckafka
    • 主题
    • ACL
    • 实例
    • 路由
    • 其他接口
  • 验证码
    • 控制台
    • 服务器
  • 文本内容安全
  • 图片内容检测
    • 图片内容审核
    • 图片内容检测
  • 音频内容检测
    • 创建音频审核任务
    • 查看任务详情
    • 查看审核任务列表
    • 短音频识别接口
    • 取消任务
  • 视频内容安全
    • 查看审核任务列表
    • 查看任务详情
    • 创建视频审核任务
    • 取消任务
  • 文字识别
    • 通用文字识别
    • 卡证文字识别
    • 票据单据识别
    • 汽车场景识别
    • 行业文档识别
    • 智能扫码
    • 营业执照核验
    • 增值税发票核验
  • 图像分析
    • 图像理解
    • 图像处理
    • 图像审核
    • 图像质量检测
  • 智能识图
    • 商品识别
  • 语音识别
    • 语音流异步识别
    • 录音文件识别
    • 一句话识别
    • 自学习
    • 热词
  • 语音合成
    • 长文本语音合成
    • 通用语音合成
  • 智能语音服务
    • 语音合成
    • 其他接口
    • 语音识别
  • 云直播
    • 水印管理
    • 证书管理
    • 录制管理
    • 直播流管理
    • 延播管理
    • 直播拉流
    • 直播转码
    • 截图鉴黄
    • 鉴权管理
    • 域名管理
    • 直播回调
    • 统计查询
    • 实时日志
    • 直播混流
  • 小程序 · 云直播
    • live
    • 其他接口
    • 直播
  • 人脸识别
    • 人脸检测与分析
    • 五官定位
    • 人脸比对
    • 人员库管理
    • 人脸搜索
    • 人脸验证
    • 人脸静态活体检测(高精度版)
    • 人脸静态活体检测
    • 人员查重
  • 内容安全
    • 内容安全
    • 图片内容安全
    • 文本内容安全
    • 自定义识别
  • 自然语言处理
    • 向量技术
    • 词法分析
    • 句法分析
    • 篇章分析
    • 知识图谱
    • 对话机器人
      ......

📥 源码下载

Go官网下载地址:https://golang.org/dl/

Go官方镜像站(推荐):https://golang.google.cn/dl/

🏃‍♂ 开启Go语言学习之旅,从"Hello World"开始!

image

Step 1:了解源代码目录结构

image


文件名文件属性
AUTHORS文件,官方 Go语言作者列表
CONTRIBUTORS文件,第三方贡献者列表
LICENSE文件,Go语言发布授权协议
PATENTS文件,专利
README文件,README文件,大家懂的。提一下,经常有人说:Go官网打不开啊,怎么办?其实,在README中说到了这个。该文件还提到,如果通过二进制安装,需要设置GOROOT环境变量;如果你将Go放在了/usr/local/go中,则可以不设置该环境变量(Windows下是C:\go)。当然,建议不管什么时候都设置GOROOT。另外,确保$GOROOT/bin在PATH目录中。
VERSION文件,当前Go版本
api目录,包含所有API列表,方便IDE使用
doc目录,Go语言的各种文档,官网上有的,这里基本会有,这也就是为什么说可以本地搭建”官网”。这里面有不少其他资源,比如gopher图标之类的。
favicon.ico文件,官网logo
include目录,Go 基本工具依赖的库的头文件
lib目录,文档模板
misc目录,其他的一些工具,相当于大杂烩,大部分是各种编辑器的Go语言支持,还有cgo的例子等
robots.txt文件,搜索引擎robots文件
src目录,Go语言源码:基本工具(编译器等)、标准库
test目录,包含很多测试程序(并非_test.go方式的单元测试,而是包含main包的测试),包括一些fixbug测试。可以通过这个学到一些特性的使用。

Step 2:Golang开发后台掌握哪些知识点?

这里我给大家整理归纳为四大块,分别是语法、中间件、后端开发、云原生。

我们通过这个四个板块的学习,逐步进阶成一个可以从事后端服务器开发的工程师。

下面我们简单介绍中间件和云原生:

中间件

MySQL、Redis、MongoDB、Kafka这些常见的中间件,这里我们不做赘述。我们着重简述下Gin、etcd、ElasticSearch、gRPC。

  • Gin
    Gin是一个用Go (Golang)编写的HTTP web框架。它具有一个类似martinii的API,性能要好得多——快了40倍。
    官方Github项目:https://github.com/gin-gonic/gin

  • etcd
    Etcd是一种强一致性的分布式键值存储,它提供了一种可靠的方法来存储需要被分布式系统或机器集群访问的数据。它可以在网络分区期间优雅地处理leader选举,并且可以容忍机器故障,即使是leader节点。
    官网:https://etcd.io/

  • ElasticSearch
    Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。
    官网:https://www.elastic.co/cn/elasticsearch/

  • gRPC
    gRPC是一个现代的开源高性能远程过程调用(Remote Procedure Call, RPC)框架,可以在任何环境中运行。通过对负载平衡、跟踪、运行状况检查和身份验证的可插拔支持,它可以有效地连接数据中心内和跨数据中心的服务。它也适用于分布式计算的最后一英里,将设备、移动应用程序和浏览器连接到后端服务。
    官网:https://grpc.io/

云原生

  • 微服务
    微服务是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关的API集相互通信。

  • DevOps
    DevOps是一种重视“软件开发人员”和“IT运维技术人员”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

  • 持续部署
    持续部署,是一种软件工程方法,意指在软件开发流程中,以自动化方式,频繁而且持续性的,将软件部署到生产环境中,使软件产品能够快速的发展。 持续部署可以整合到持续整合与持续交付(Continuous delivery)的流程之中。

  • 容器化
    容器化是软件开发的一种方法,通过该方法可将应用程序或服务、其依赖项及其配置(抽象化为部署清单文件)一起打包为容器映像。 容器化应用程序可以作为一个单元进行测试,并可以作为容器映像实例部署到主机操作系统 (OS)。

Step 3:如何高效地学习Go?

想要高效地的学习Golang,单单知道学习哪几个板块,是远远不够的。我们还需要将每个板块的知识点进一步细化。
——成功与失败之间,最重要的是不容忽视的细节

那么开始进一步完善之前的知识点:

语法

  • 语法基础
    • 错误处理
    • 包定义以及导入
    • 结构体
    • 反射原理
    • 值传递、引用传递、defer函数
  • 并发编程
    • goroutine
    • 锁
    • 通道channel
    • runtime包
    • Context使用原则
  • 网络编程
    • tcp/udp编程
    • http实现
    • websocket
  • 源码掌握
    • GC机制
    • 调度器
    • 定时器
    • map与切片
  • 第三方测试框架
    • goconvey
    • gostub
    • gomock
    • monkey

中间件

  • MySQL
    • golang的CRUD
    • jmorion/sqlx包
    • 连接池
    • 异步mysql
  • Gin
    • RESTful API
    • URL查询参数
    • query接收数组和Map
    • 表单参数
    • 上传文件
    • 分组路由routel以及中间件授权
    • json、struct、xml、yaml、protobuf渲染
  • Redis
    • go-redis
    • get/set/zset操作
    • 连接池
    • 分布式锁
  • MongoDB
    • MongoDB-driver
    • BSON解析
    • CRUD操作
    • 文档管理
    • 连接池
  • Kafka
    • saram包
    • 同步、异步
    • zstd压缩算法
    • 横向扩展
    • go实现生产消费者
    • topic和partition
    • 消息分发策略
    • 分区副本机制
  • etcd
    • 原理
    • 分布式锁
    • etcd操作
    • 服务发现于注册
  • ElasticSearch
    • es服务器
    • go- elasticsearch包
    • node于cluster
    • Index于Document
    • 检测与配置
  • gRPC
    • protoc-gen-go开发包
    • .proto文件
    • gRPC Service Stub
    • rpc接口设计
    • 通信模式
    • 拦截器
    • 多路复用
    • 负载均衡
    • 安全认证

后端开发

  • 游戏后端
    • leaf框架
    • 网关、协议、日志、网络模块
  • 流媒体Web后端
    • Restful接口设计
    • scheduler设计
    • apidefs结构体
    • mysql建库建表
  • 小程序后端
    • 公众号开发流程
    • 微信消息接收与解析
    • 公众号验证URL+Token
    • 内网环境接口测试
    • 后端程序测试脚本
  • goadmin后台权限管理系统
    • RESTful API设计
    • Gin框架
    • JWT认证
    • 支持Swagger文档
    • GORM对象关系映射
    • 基于Casbin的RBAC访问控制模型
  • goim千万级高并发推送服务
    • 单个、多个、广播消息推送
    • 应用心跳、tcp、keepalive、http log pulling
    • 异步消息推送
    • 接入层多协议
    • 可拓扑架构
    • 注册发现服务
    • 消息协议(protobuf)
    • goim推送
    • grpc编程
  • 腾讯云大数据
    • TBDS
    • 云数据仓库PostgreSQL
    • 弹性MapReduce
    • WeData数据开发平台

云原生

  • 微服务
    • go-micro原理
    • rpc
    • 服务间同步
    • json/protobuf
  • DevOps
    • 项目管理 CODING-PM
    • 测试管理 CODING-TM
    • 制品库 CODING-AR
    • 代码托管 CODING-CR
  • 持续部署
    • spinnake
    • webhook外部对接
    • 蓝绿分布/金丝雀发布
    • SCF云函数
    • 快速回滚
  • 容器化
    • Docker化部署
    • k8s集群
    • CVM云服务器
    • TKE容器服务

🤝 鸣谢

本repo励志作为全网golang资料最全的repo,因此非常感谢各位贡献patch的朋友, 还有很多在issue里面出谋划策的朋友,为此衷心感谢。


零领工作


实时提供,每周发布北京,上海,广州,深圳,杭州,南京,合肥,武汉,长沙,重庆,成都,西安,厦门的c/c++,golang方向的招聘岗位信息。 校招,社招,实习岗位都有的。 面经,八股,简历都有的
零领工作