Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Golang 100 Days | 4,800 | a year ago | 22 | Smarty | ||||||
Golang - 100天从新手到大师 | ||||||||||
Getty | 850 | 3 | 15 days ago | 27 | November 20, 2023 | 9 | apache-2.0 | Go | ||
a netty like asynchronous network I/O library based on tcp/udp/websocket; a bidirectional RPC framework based on JSON/Protobuf; a microservice framework based on zookeeper/etcd | ||||||||||
Trezord | 58 | 6 years ago | lgpl-3.0 | C++ | ||||||
:warning: OBSOLETE. DO NOT USE! TREZOR Communication Daemon | ||||||||||
Capps Eth | 18 | a year ago | 1 | mit | Go | |||||
Ethereum contracts of sample CelerX dApps | ||||||||||
Engine Plugin Unity3d | 15 | 2 years ago | C# | |||||||
Unity3D plugin for iFun Engine | ||||||||||
Mnemosyne | 14 | 4 years ago | 70 | July 06, 2019 | 4 | mit | Go | |||
Session management service with RPC API based on protobuf. | ||||||||||
X Im | 9 | 5 years ago | JavaScript | |||||||
springboot,websocket,Protobuf,LayIM 等构建的实时通讯项目 |
作者:韩茹,Davie,Steven
最近有很多小伙伴都在寻找go语言完整学习资料,但是录制视频和教程都需要不少的时间,平时也在筹备Go语言学科的事情,所以时间上比较紧张,我和Davie老师分别负责一部分Golang内容的产出。从技术文章,到视频,到项目代码。也都公布在各大平台上,但是知乎上就只方便看技术文章,B站上就只方便看视频。所以我们在github上上传了我们所有的学习资料,从最基础的入门到项目设计,希望帮助更多想了解和学习Go语言的伙伴,为方便大家交流学习。我们建了学习讨论群组(Go语言学习营:784190273)可以加群进行学习讨论。
因为是持续创作,所以也会持续更新。有些章节目录还没有内容,敬请期待。。
创作不易,感谢大家的支持。如果看后觉得有收获,可以打赏请作者喝咖啡吧,如果有疑问可以进群讨论。
最后感谢千锋教育Go语言教学部的鼎力支持。
Go语言是谷歌2009年发布的第二款开源编程语言(系统开发语言),它是基于编译、垃圾收集和并发的编程语言。 Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美 C / C++代码的速度,而且更加安全、支持并行进程。作为出现在21世纪的语言,其近C的执行性能和近解析型语言的开发效率,以及近乎于完美的编译速度,已经风靡全球。特别是在云项目中,大部分都使用了Golang来开发。不得不说,Golang早已深入人心。而对于一个没有历史负担的新项目,Golang或许就是个不二的选择。
Golang的哲学理念:“Less is more or less is less”。
目前几个比较流行的领域,Go都有用武之地。
云计算基础设施领域
代表项目:docker、kubernetes、etcd、consul、cloudflare CDN、七牛云存储等。
基础软件
代表项目[tidb、influxdb、cockroachdb等。
微服务
代表项目:go-kit、micro、monzo bank的typhon、bilibili等。
互联网基础设施
代表项目:以太坊、hyperledger等。
分布式系统、数据库代理器、中间件等,例如Etcd
DevOps - Go / Python / Shell / Ruby
作为一名Go语言开发者,主要的就业领域包括:
给初学者的几个建议:
Go语言简介 - Go语言的历史 / Go语言核心特性 / Go语言的logo版本 / Go的应用领域
Go语言环境搭建 - Windows系统 / Linux系统 / MacOS系统
HelloWorld程序 - Go语言文件的结构格式 / fmt包 / Print函数
Go的执行原理 - Go的命令
安装IDE - Goland工具 / 其他的IDE
注释 - 注释的作用 / 单行注释 / 多行注释
编码规范
进制以及转换 - 计算机原理 / 二进制 / 十进制 / 八进制 / 十六进制 / 进制转换
变量 - 变量的命名 / 变量的使用 / 变量的分析 / 变量的注意事项
常量 - 常量的命名 / 常量的使用 / 常量的分析 / 常量的注意事项 / iota关键字
数据类型 - 整数 / 浮点数 / 复数 / 字符串 / 字符编码
数据类型的转换 - 强制转换 / 自动转换
运算符 - 算术运算符 / 赋值运算符 / 比较运算符 / 逻辑运算符 / 位运算符 / 位移运算符 / 运算符的优先级
表达式 - 表达式的值 / 表达式的类型
键盘输入和打印输出 - Scanln() / Scanf() / Print() / Printf() / Println()
格式化占位符 - %v / %T / %t / %s / %f / % d / %p / %c 。。。
分支结构的应用场景 - 条件 / 结构 / 代码块 / 流程图
if语句 - 简单的if / if-else结构 / if-elif-else结构 / 嵌套的if / if的其他写法
switch语句 - switch的结构 / case语句 / break语句 / fallthrough语句 / switch的其他写法
数组 - 数组的概念 / 数组的使用 / 数组的语法 / 数组的长度 / 数组的注意点
数组的遍历 - 数组的下标 / 普通for遍历数组 / for…range 遍历
数组的排序 - 冒泡排序 / 选择排序 / 插入排序 。。。
多维数组 - 二维数组 / 二维数组的使用 / 二维数组的遍历
数组的数据类型 - 数组是值类型数据
切片 - 切片的概念 / 切片的使用 / 切片的语法 / 切片的长度和容量 / 切片的注意点
切片的原理 - 切片的底层数组 / 已有数组上创建切片 / 截取切片
切片的遍历 - 切片的下标 / 普通for遍历切片 / for…range 遍历
切片相关函数 - make() / append() / copy() / len() / cap()
切片拷贝 - 深拷贝 / 浅拷贝
切片的数据类型 - 切片是引用类型数据
Map - Map的概念 / Map的使用 / Map的语法 / Map的长度和容量 / Map的注意点
Map的存储特点 - key-value / Map的key类型 / Map中的键值对无序
Map的创建 - 空Map /
Map的操作 - 添加数据 / 修改数据 / 获取数据 / 删除数据
Map的数据类型 - Map是引用类型数据
函数 - 函数的概念 / 函数的作用
函数的语法 - 定义函数 / 调用函数
函数的参数 - 参数的使用 / 可变参数 / 参数传递
函数的返回值 - 返回值 / return语句 / 没有返回值 / 返回单个值 / 返回多个值
变量作用域 - 局部变量 / 全局变量
递归函数 - 递归算法 / 递归函数实现
函数高级 - 函数的本质 / 匿名函数 / 高阶函数 / 回调函数 / 闭包结构
defer函数 - 延迟函数 / 延迟参数 / 堆栈的延迟 / defer注意点
包管理 - 包的概念 / 包的定义 / 包的导入 / main包
包的关键字 - package / import
包的导入逻辑 - init()函数 / 同包的多个init()函数 / 不同包的多个init()函数
管理外部包
指针 - 指针的概念 / 获取变量的地址 / 操作指针改变变量
指针的语法 - 定义指针 / * / 获取指针数值 / & / 指针的指针
指针的注意点 - 指针的类型 / 指针的地址 / 空指针
指针的应用 - 指针作为参数 / 指针作为函数的返回值 / 数组指针和指针数组 / 指针函数和函数指针
方法 - 方法的概念 / 方法的使用
方法的语法 - 方法接受者 / 方法和函数
结构体嵌套中的方法 - 方法的"继承" / 方法的"重写"
接口 - 接口的概念 / 接口的使用
接口的语法 - interface / 接口类型
接口的应用 - 空接口 / 类型断言 / type关键字
错误 - 错误的概念 / 错误的用法 /
错误的类型 - error接口 / 错误类型表示 / 自定义错误
错误的处理 - 返回错误的函数 / 错误的处理
相关知识 - panic()函数 / recover()函数 / defer()函数
I / O - 什么是I/O / os包的使用
文件操作 - 获取文件信息 / 文件创建
I / O 操作
相关包 - bufio包 / ioutil包
I / O 应用 - 复制文件 / 断点续传 / 遍历文件夹
beego框架 - beego简介 / beego安装 / beego特性
bee工具 - bee简介/ bee安装
bee的用法 - bee命令
beego程序流程分析 - beego程序入口 / go语言执行顺
beego框架功能 - 请求拦截 / 路由分发
beego控制器 - 处理逻辑
beego.Run方法 - 解析配置 / 路由分发 / 监听服务
conf配置 - 项目数据配置 / 配置数据读取
controllers - 控制器介绍 / 控制器功能 / 控制器定义
models- 数据层作用 / model定义
routers - 路由层功能 / 路由分类
静态资源 - 静态资源目录作用 / 静态资源路径设置
数据库安装及配置 - mysql数据库安装 / mysql数据库基本命令 / 可视化工具
数据库驱动 - 数据库驱动分类 / mysql驱动安装 / 连接配置 / 连接数据库
bee工具使用 - 项目创建 / 项目运行
mysql数据库操作 - 数据库连接配置 / 读取数据库配置 / 连接数据库
models- 数据库表设计 / 执行数据库操作方法封装
用户注册 - 视图表单数据提交 / 服务器接收post数据 / 操作数据库表添加数据
用户登录 - 登录功能控制器 / 路由注册 / 服务器接收Post数据 / 数据库表条件查询
Session处理 - session功能启用配置 / 添加session数据 / 获取session数据 / 删除session数据
BaseController - BaseController作用 / controller方法执行顺序 / Parepare方法作用
model层 - 数据库表设计 / 数据库添加操作
控制器 - 写文章功能控制器定义 / get方法解析html页面 / Post方法接收form表单数据
路由层 - 注册路由解析
视图层 - html功能页面 / js逻辑判断 / js表单提交
分页功能 - 分页设计 / 数据库limit操作实现分页查询
首页内容显示 - model转换 / 分页视图功能
Markdown语法 - 常见第三方库 / markdown格式编程语法 / markdown与html转换
修改文章功能 - 注册修改功能路由 / 修改功能controller逻辑实现 / get方法渲染页面 / post方法接收表单数据 / 数据库表数据修改操作
删除功能 - 按条件删除数据库表数据 / 删除后视图重定向
标签功能 - 数据库查询
功能扩展 - tags查询 / page查询 / 多条件逻辑判断 / 多条件查询&的使用
文件上传 - 数据表设计 / js实现文件提交 / 服务器接收文件数据 / 文件类型判断 / 文件大小判断 / 文件名 / 保存文件
项目总结 - beego框架组成 / bee调试工具 / beego程序执行流程 / 数据库操作 / beego项目架构 / session处理 / 模板文件语法
web开发 - 项目架构 / 开发流程 / 实战项目介绍 / 项目技术栈
iris框架 - iris简介 / iris特性 / iris框架安装 / iris参考资料
http请求和处理 - 数据请求和分类 / http1.0和http1.1 / iris标准请求处理 / 自定义请求处理 / 请求处理数据格式封装
路由处理 - Context概念 / 正则表达式路由
路由组 - Party实现路由组 / context.Next()方法 / taml配置文件 / yaml配置文件设置 / 自定义配置文件 / 自定义配置设置
mvc包 - mvc.Application作用 / mvc特性 / 声明周期 / mvc.Configure配置
session处理和使用 - session与cookie区别 / session支持数据类型 / session创建 / session使用
实战项目 - 创建企业管理平台项目 / 目录说明 / 项目资源集成
微服务简介 - 构建单体应用 / 互联网公司架构
单体应用困境 - 应用发展趋势 / 困难与困境
复杂问题解决方案 - 微服务架构 / 系统扩展性 / 微服务的优点 / 微服务不足
微服务实践 - 微服务的定义 / 微服务实践要解决的问题 / 常见的微服务架构
RPC介绍 - RPC简介及原理介绍 / 本地过程调用 / RPC技术实现
RPC编程与实现 - RPC官方库 / net/rpc库实现RPC调用编程
RPC与Protobuf结合 - 传输数据格式定义 / Protobuf格式数据与RPC结合
gRPC介绍和安装 - 什么是gRPC / grpc-go介绍
gRPC框架使用 - 定义服务 / 编译.proto文件 / gRPC实现RPC编程
gRPC编程使用 - 服务端流RPC / 编译.protoc文件 / 服务端代码 / 客户端代码生成 / 服务的注册监听处理 / 客户端数据接收 / 客户端流模式 / 双向流模式
TLS验证和Token认证 - 授权认证 / SSL/TLS工作原理 / Token认证过程 / 自定义Token认证
拦截器的使用 - Interceptor介绍 / 自定义UnaryServerInterceptor / 拦截器注册
micro框架介绍 - 背景 / micro概述介绍 / micro组成 / micro工具组件:API、Web、Sidecar、Bot / Go-Micro特性 / consul安装及环境准备
创建微服务 - 微服务的定义 / 初始化服务实例 / Options可选项配置 / 定义服务接口,实现服务业务逻辑 / 微服务调用 / 自定义指定服务发现组件
心跳机制与可选项配置 - 心跳机制的由来 / consul心跳配置 / TTL和间隔时间
事件驱动机制 - 发布/订阅机制 / Broker组件设计 / go-plugins安装 / MQTT介绍及环境搭建 / 编程实现消息订阅和发布
致谢:
感谢的千锋教育以及千锋教育Go语言组的同事:Steven老师,Davie老师等在技术上给与的知道和帮助。# Golang-100-Days