每日新闻

每日新闻

GoCN每日新闻资讯
有问必答

有问必答

Go相关的问题,技术相关的问题
文章分享

文章分享

技术文章分享,让知识传播给更多的人
招聘应聘

招聘应聘

为Gopher服务的招聘应聘平台

go-kit 微服务 系列文章归档

hwholiday 发表了文章 • 0 个评论 • 245 次浏览 • 2020-01-15 09:16 • 来自相关话题

## go-kit 微服务 系列文章归档 - go-kit 里面核心的东西有三层分别是:Transport、Endpoint、Service + Transport 层主要负责与网络层相关逻辑 + Endpoint ...查看全部

## go-kit 微服务 系列文章归档

- go-kit 里面核心的东西有三层分别是:Transport、Endpoint、Service
+ Transport 层主要负责与网络层相关逻辑
+ Endpoint 层主要负责请求数据与返回数据格式的转换,以及公用中间件逻辑
+ Service 层业务逻辑

### go-kit 更像是一个微服务的工具集,而不是一个完整的框架,里面包含了限流,日志,服务注册与发现,熔断,服务监控,链路追踪等相关工具方法

## 归档

* [go-kit 微服务 基础使用 (HTTP)](https://www.hwholiday.com/2019/go_kit_v1/)

* [go-kit 微服务 添加日志(user/zap ,并为每个请求添加UUID)](https://www.hwholiday.com/2020/git_kit_v2/)

* [go-kit 微服务 身份认证 (JWT)](https://www.hwholiday.com/2020/go_kit_v3/)

* [go-kit 微服务 限流 (uber/ratelimit 和 golang/rate 实现)](https://www.hwholiday.com/2020/go_kit_v4/)

* [go-kit 微服务 使用GRPC(并为每个请求添加UUID)](https://www.hwholiday.com/2020/go_kit_v5/)

* [go-kit 微服务 服务注册与发现(etcd实现)](https://www.hwholiday.com/2020/go_kit_v6/)

* [go-kit 微服务 服务监控(prometheus 实现)](https://www.hwholiday.com/2020/go_kit_v7/)

* [go-kit 微服务 服务熔断(hystrix-go 实现)](https://www.hwholiday.com/2020/go_kit_v8/)

* [go-kit 微服务 服务链路追踪(jaeger 实现)(1)](https://www.hwholiday.com/2020/go_kit_v9/)

* [go-kit 微服务 服务链路追踪(jaeger 实现)(2)](https://www.hwholiday.com/2020/go_kit_v10/)

### [完整代码示例](https://github.com/hwholiday/learning_tools/tree/master/go-kit) (go-kit微服务)

## 联系 QQ: 3355168235

Dig101: Go之灵活的slice

newbmiao 发表了文章 • 0 个评论 • 204 次浏览 • 2020-01-13 21:08 • 来自相关话题

Dig101: dig more, simplified more and know moreSlice作为go常用的数据类型,在日常 ...查看全部

Dig101: dig more, simplified more and know more

Slice作为go常用的数据类型,在日常编码中非常常见。
相对于数组的定长不可变,slice使用起来就灵活了许多。


文章目录

0x01 slice 到底是什么?
0x02 slice能比较么?
0x03 花样的切片操作
0x04 append 时发生了什么?
0x05 append内部优化
- 扩容的策略是什么?
- 扩容判断中uint的作用是啥?
- 内存清零初始化: memclrNoHeapPointers vs typedmemclr?


可以移步 微信版 阅读

bufio包去读TCP数据不能读全的问题

回复

zhougb3 发起了问题 • 1 人关注 • 0 个回复 • 240 次浏览 • 2020-01-12 20:52 • 来自相关话题

20 个有用的 Go 语言微服务开发框架吐血总结!!!

有只黑白猫 发表了文章 • 0 个评论 • 370 次浏览 • 2020-01-08 15:29 • 来自相关话题

点击这里,查看剩余1 ...查看全部

点击这里,查看剩余10个高效有用的Go 语言微服务开发框架

Beego https://beego.me/

Beego 框架提供了很多标准附加功能,例如全功能路由器和可用于执行 CRUD 操作的对象到数据库映射工具。Bee 是 Beego 爱好者的最爱,它是一个快速而强大的命令行工具,用于构建、更新、打包和部署应用程序。Bee 可以从模板生成源代码,并保持数据库的最新状态。

Buffalo https://gobuffalo.io/en

Buffalo 团队需要能够将 Web 应用程序的所有部分组装在一起的东西,包括应用程序本身的一些设计。他们把能够安装在一起的很多部件叫作“生态系统”。如果你想要路由——很少有人不需要——Buffalo 就包含了 Gorilla/Mux。如果你需要模板,Buffalo 倾向于使用 Plush,而不是使用内置的 Go 语言模板机制。数据库连接模块集合 Pop 可以帮你将数据库信息转换为 Go 对象。你还可以找到连接数据库、处理 cookie 以及完成其他任务的标准方法。

Cobra https://github.com/spf13/cobra

有时候,你只需要一个命令行界面。Cobra 提供了 CLI 的所有标准功能,因此你不必浪费时间实现代码来查找 -h 或 -help 标志。如果你的微服务需要对具有大量标志和其他功能的命令行调用做出响应,那么可以考虑集成 Cobra。

Docker你当然可以在办公室服务器小黑屋里的裸机上运行微服务,但越来越多的人将他们的代码捆绑在 Docker 容器中,并将容器发到云端。小型的包更容易处理大量不同的代码块,当你对微服务架构的愿景要求你创建很多小的独立代码块时,这将是一项有价值的服务。

值得一提的是,Docker 是用 Go 语言开发的,尽管在部署 Docker 容器时你可能永远不会想到这一点。Docker 社区版是开源的,所以如果有必要,你可以参与其中,但很可能你只是将 Docker 作为部署微服务的工具。Go 语言爱好者之所以想要记住 Docker 是用 Go 语言开发的这一事实,是因为无处不在的 Docker 有力地证明了他们对这门语言的支持。

Echo https://echo.labstack.com/

Echo 是一个极简框架,但它提供了很多最重要的组件。路由器可以将 URL 拆解,然后将拆解的各个部份转换为参数,因此你无需自行解析它们。然后,你可以混合使用身份验证、表单解析、压缩和合理性限制。你可以专注于从函数中返回正确的信息。

Errors https://github.com/juju/errors

有时候,API 的用户会传递错误的参数。你可以自己处理这些参数,也可以把它们创给 Errors,这是一个可以自动执行大部分跟踪的库,方便进行调试。当发生错误时,Errors 会使用注释来详细说明出错的地方和位置。

Gin https://github.com/gin-gonic/gin

Gin 是 Martini( https://github.com/go-martini... )的下一代框架。可以说,Gin 抛弃了那些额外的东西,专注于提供最有用的部分。花费大量时间构建 Node.js 微服务的开发人员会感到宾至如归。你可以实例化一个对象,然后附加函数来处理特定的调用,这样就可以创建一个微服务。Gin 负责处理路由,而你的函数处理业务逻辑。如果不去考虑标点符号,它的代码甚至看起来有点像 Node.js 代码。

Ginkgo https://onsi.github.io/ginkgo/

测试可能是微服务开发当中最具挑战性的事情。Ginkgo 通过行为驱动测试扩展了标准 Go 发行版的内置测试机制。Ginkgo 提供了一种高级机制,用于指定函数或服务应该产生哪些结果。结果通常使用 Ginkgo 提供的 Gomega 匹配器( http://onsi.github.io/gomega/ )进行评估,但如果你愿意,也可以使用不同的匹配器库。

Ginkgo 是一个全面的框架,提供了各种选项,用于设置测试数据、运行测试以及在事后释放测试数据。你只需要描述结果,然后让 Ginkgo 处理其他的事情。

Goa https://github.com/goadesign/goa

如果你是一个曾经使用 Ruby 和 Praxis 框架的开发人员,或者是一个欣赏设计语言的强大力量人,那么你会在 Goa 中找到很多你喜欢的东西。你本身不需要编写 Go 代码。你使用 Goa DSL 为 API 编写设计规范,然后 Goa 将其转换为可执行的 Go 代码。DSL 针对微服务 API 进行了优化,并强制你的设计遵循标准的架构。

Gorilla http://www.gorillatoolkit.org/

Gorilla 项目提供了一系列你需要的模块。Gorilla 的 Mux( http://www.gorillatoolkit.org... )路由器被很多其他框架使用,因为它太好用了。很多用户之所以使用 Gorilla,是因为 websocket( http://www.gorillatoolkit.org... )。

Gotify https://github.com/gotify/server

同步一组微服务所面临的一个挑战是建立有效的消息传递节点。Gotify 是一个简单的服务器,用于发送和接收消息,将你的微服务集合与持续存储的消息组合在一起。最有用的部分可能是它的 Web 接口,可帮助开发者应对最令人头疼的调试问题。

关键字:开发 框架 前端开发 Go API 微服务

Dig101: Go之for-range排坑指南

newbmiao 发表了文章 • 0 个评论 • 218 次浏览 • 2020-01-05 00:17 • 来自相关话题

好久没写了,打算今年做个Dig101系列,挖一挖技术背后的故事。Dig101: dig more, simplified more and know moregolang常用的 ...查看全部

好久没写了,打算今年做个Dig101系列,挖一挖技术背后的故事。

Dig101: dig more, simplified more and know more

golang常用的遍历方式,有两种: for 和 for-range。 而for-range使用中有些坑常会遇到,今天我们一起来捋一捋。

文章目录

  • 0x01 遍历取不到所有元素指针?
  • 0x02 遍历会停止么?
  • 0x03 对大数组这样遍历有啥问题?
  • 0x04 对大数组这样重置效率高么?
  • 0x05 对 map 遍历时删除元素能遍历到么?
  • 0x06 对 map 遍历时新增元素能遍历到么?
  • 0x07 这样遍历中起 goroutine 可以么?

可以移步 微信版地址 阅读全文

Go语言——sync.Map源码分析

回复

有只黑白猫 发起了问题 • 1 人关注 • 0 个回复 • 127 次浏览 • 2020-01-03 16:10 • 来自相关话题

go语言错题及答案整理

有只黑白猫 发表了文章 • 0 个评论 • 200 次浏览 • 2020-01-03 15:37 • 来自相关话题

点击这里,查看剩余错题及答案简介:&nb ...查看全部

点击这里,查看剩余错题及答案

简介: 本文即Go语言的那些坑三

不要对Go并发函数的执行时机做任何假设

请看下列的列子:

1import ( 2 "fmt" 3 "runtime" 4 "time" 5) 6func main(){ 7 names := []string{"lily", "yoyo", "cersei", "rose", "annei"} 8 for _, name := range names{ 9 go func(){10 fmt.Println(name)11 }()12 }13 runtime.GOMAXPROCS(1)14 runtime.Gosched()15}


请问输出什么?
答案:


1annei2annei3annei4annei5annei



为什么呢?是不是有点诧异?
输出的都是“annei”,而“annei”又是“names”的最后一个元素,那么也就是说程序打印出了最后一个元素的值,而name对于匿名函数来讲又是一个外部的值。因此,我们可以做一个推断:虽然每次循环都启用了一个协程,但是这些协程都是引用了外部的变量,当协程创建完毕,再执行打印动作的时候,name的值已经不知道变为啥了,因为主函数协程也在跑,大家并行,但是在此由于names数组长度太小,当协程创建完毕后,主函数循环早已结束,所以,打印出来的都是遍历的names最后的那一个元素“annei”。
如何证实以上的推断呢?
其实很简单,每次循环结束后,停顿一段时间,等待协程打印当前的name便可。


1import (2 "fmt"3 "runtime"4 "time"5)6func main(){7 names := []string{"lily", "yoyo", "cersei", "rose", "annei"}8 for _, name := range names{9 go func(){10 fmt.Println(name)11 }()12 time.Sleep(time.Second)13 }14 runtime.GOMAXPROCS(1)15 runtime.Gosched()16}


打印结果:

1lily2yoyo3cersei4rose5annei

以上我们得出一个结论,不要对“go函数”的执行时机做任何的假设,除非你确实能做出让这种假设成为绝对事实的保证。
**假设T类型的方法上接收器既有T类型的,又有_T指针类型的,那么就不可以在不能寻址的T值上调用_T接收器的方法**

请看代码,试问能正常编译通过吗?


1import ( 2 "fmt" 3) 4type Lili struct{ 5 Name string 6} 7func (Lili *Lili) fmtPointer(){ 8 fmt.Println("poniter") 9}10func (Lili Lili) fmtReference(){11 fmt.Println("reference")12}13func main(){14 li := Lili{}15 li.fmtPointer()16}


答案:

关键字 Go语言 程序员 开发者

Golang 新手教程:入门速成指南

有只黑白猫 发表了文章 • 0 个评论 • 196 次浏览 • 2020-01-03 15:35 • 来自相关话题

点击这里,查看剩余 ...查看全部

点击这里,查看剩余数据类型、数组、流程控制等重要内容

简介: 在许多语言中,有许多方法可以解决某些给定的问题。因此 程序员可以花很多时间思考解决问题的最佳方法。 然而,Go 却是只有一种正确的方法来解决问题的语言。 这节省了开发人员的时间,并使大型代码库易于维护。 Go 中没有地图和过滤器等 “富有表现力” 的功能。

image.png
让我们从 Go(或 Golang)的一个小介绍开始。 Go 由 Google 工程师 Robert Griesemer,Rob Pike 和 Ken Thompson 设计。 它是一种静态类型的编译语言。 第一个版本于 2012 年 3 月作为开源发布。

“Go 是一种开源编程语言,可以轻松构建的简单,可靠,高效的软件”。 --- 关于 go

在许多语言中,有许多方法可以解决某些给定的问题。因此 程序员可以花很多时间思考解决问题的最佳方法。
然而,Go 却是只有一种正确的方法来解决问题的语言。
这节省了开发人员的时间,并使大型代码库易于维护。 Go 中没有地图和过滤器等 “富有表现力” 的功能。

“如果你有增加表现力的功能,通常会增加费用” --- Rob Pike

入门

Go 是由包组成的。 main 包告诉 Go 编译器该程序可以被编译成可执行文件,而不是一个共享的库。它是应用程序的入口。main 包被定义为如下格式:

package main

接下来,让我们通过在 Go 工作区中创建一个文件 main.go 来编写一个简单的 hello world 示例。

go的工作区

Go 中的工作空间由环境变量「GOPATH」定义。你写的任何代码都将写在工作区内。Go 将搜索 GOPATH 目录中的任何包,或者在安装 Go 时默认设置的 GOROOT 目录。 GOROOT 是安装 go 的路径。

将 GOPATH 设置为你想要的目录。 现在,让我们将它添加到文件夹〜/ workspace 中。

#写入 env
export GOPATH=~/workspace

#cd 到工作区目录\
cd ~/workspace

使用我们刚刚创建的工作空间文件夹中的以下代码创建文件 main.go。

Hello World!

package main

import (
"fmt"
)

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

在上面的 demo 中, fmt 是 Go 中的内置包,它实现了格式化 I / O 的功能。
在 Go 中我们导入一个包使用 import 关键字func main 是代码执行的入口。Println 是 fmt 包中的一个函数,它为我们打印 “hello world”。
让我们看一下运行这个文件。 我们可以通过两种方式运行 Go 命令。 我们知道,Go 是一种编译语言,所以我们首先需要在执行之前编译它。

> go build main.go

这会创建一个二进制可执行文件 main,现在我们可以运行它:

> ./main
# Hello World!

还有另一种更简单的方法来运行程序。 go run 命令有助于抽象编译步骤。 您只需运行以下命令即可执行该程序。

go run main.go
# Hello World!

您可以使用 https://play.golang.org 来运行本文提到的代码。

变量

变量在 Go 语言中是一个很明确的定义。 Go 是一种静态类型的语言。这意味着在声明变量时我们就需要明确变量的类型。一般一个变量的定义如下:

var a int

上面的实例中,我们定义了一个 int 类型的变量 a ,默认会被赋值成 0 。使用以下语法可以初始化改变变量的值:

var a = 1

这里我们没有制定变量 a 的类型,在我们给它初始化为 1 时,它就自动被定义成了 int 类型的变量。
我们也可以使用一种更简短的语法来定义它:

message := "hello world"

我们也可以在同一行声明多个同类型变量:

var b, c int = 2, 3

数据类型


关键字:存储 JSON JavaScript 程序员 编译器 Go API 定位技术 数据格式

2019 Go Developer Survey (尽量多参与,发出中国Gopher的声音)

回复

h12 发起了问题 • 1 人关注 • 0 个回复 • 228 次浏览 • 2019-11-21 18:09 • 来自相关话题

[风险预警]Go 1.13.2和1.12.11会在17号左右更新修复安全问题

kevin 发表了文章 • 0 个评论 • 406 次浏览 • 2019-10-12 15:32 • 来自相关话题

Hello gophers,We plan to issue Go 1.13.2 and Go 1.12.11 on Wednesday, October 16.These are minor ...查看全部
Hello gophers,

We plan to issue Go 1.13.2 and Go 1.12.11 on Wednesday, October 16.
These are minor releases to fix security issues.

Following our policy at https://golang.org/security,
this is the pre-announcement of those releases.

Cheers,
Katie on behalf of the Go team

Golang 网络库并发吞吐量测试

惜朝 发表了文章 • 0 个评论 • 448 次浏览 • 2019-09-24 16:56 • 来自相关话题

https://github.com/Allenxuxu/gev本文主要测试  ...查看全部

https://github.com/Allenxuxu/gev

本文主要测试 gev 网络库和其他三方 Go 网络库以及标准库的吞吐量对比。


## 测试对象


- gev :一个轻量、快速的基于 Reactor 模式的非阻塞 TCP 网络库
- eviop :evio 的优化版本
- evio :Fast event-loop networking for Go
- gnet:eviop 的网络模型替换版本
- net 标准库

## 测试方法


采用陈硕测试 muduo 使用的 ping pong 协议来测试吞吐量。

> 简单地说,ping pong 协议是客户端和服务器都实现 echo 协议。当 TCP 连接建立时,客户端向服务器发送一些数据,服务器会 echo 回这些数据,然后客户端再 echo 回服务器。这些数据就会像乒乓球一样在客户端和服务器之间来回传送,直到有一方断开连接为止。这是用来测试吞吐量的常用办法。

测试的客户端代码:https://github.com/Allenxuxu/gev/blob/master/benchmarks/client/main.go

测试脚本:https://github.com/Allenxuxu/gev/blob/master/benchmarks/bench-pingpong.sh

主要做两项测试:

- 单线程单个 work 协程测试,测试并发连接数为 10/100/1000/10000 时的吞吐量
- 4线程4个 work 协程测试,测试并发连接数为 10/100/1000/10000 时的吞吐量

所有测试中,ping pong 消息的大小均为 4096 bytes,客户端始终是4线程运行。

## 测试结果






## 总结与思考


无论是单线程,还是多线程模式下,gev 都比其他网络库吞吐量略高出一些。

evio 因为 epoll 使用一些 bug 和可优化之处,所以在 linux 环境中的吞吐量远不如优化版本 eviop 。

eviop 是我对 evio bug 修复和优化的版本,所以其性能也是比 evio 提升不少。我曾尝试在 eviop 中替换 evio 的网络模型(evio 利用 accpet 的惊群现象工作),但是因为其代码耦合度过高,修改成本过大,最终决定一边完善 eviop(维持网络模型不变)一边自己借鉴muduo 的网络模型重新撸一个新的 -- gev 。

gnet 是研究了 eviop 的代码,继续在其之上替换网络模型的版本。但是网络模型的优势在单线程模式中并没有体现出来,吞吐量反而比 eviop 小一些。在多线程模式下,网络模型的优势得以体现。

gev 与其他使用 epoll 构建的基于事件驱动的网络库在逐步的优化中,相信性能都差不多。因为作者目的不同,网络库不同的设计,优势点都会不同。我研究 evio,最终自己撸了 gev ,也是因为想要一个在内存占用低前提下,速度足够快,能负载更多连接的网络库。

如果对 gev 网络库感兴趣,欢迎提意见和 PR 。➡️ https://github.com/Allenxuxu/gev

学习2019新版《郝林—Go语言核心36讲》

tantanyat 发表了文章 • 0 个评论 • 498 次浏览 • 2019-09-19 23:42 • 来自相关话题

![](http://www.97yrbl.com/data/attachment/forum/201909/19/231946k88y68sycy8vb16b.jpg) “我可以保证的是,如果你认真地跟我一起走完这个专栏,那么基本掌 ...查看全部
![](http://www.97yrbl.com/data/attachment/forum/201909/19/231946k88y68sycy8vb16b.jpg)

“我可以保证的是,如果你认真地跟我一起走完这个专栏,那么基本掌握 Go 语言是肯定的。至少,本专栏一定会成为你学习 Go 语言最重要的敲门砖和垫脚石。”



这样的信心除了源自作者的实力之外,也是由于 Go 语言本身就是一种容易入门的语言,它语法简洁、即便没有计算机的学科背景,也可以在短时间内迅速掌握。除此之外,它稳定性强、利于上手、程序库多、运行迅速的诸多优点,让它在近年快速崛起,被誉为“新世纪的 C 语言”。

2018 年 7 月,Go 语言一举超过 Java,进入了编程语言招聘榜的前三名。许多大厂都已经拥抱 Go 语言。这其中包括以 Java 打天下的阿里巴巴,更别提那些深爱着 Go 语言的滴滴、今日头条、小米、奇虎 360、京东等明星公司。高人才需求也就意味着高额的回报,如今掌握 Go 语言已经成为了简历上的一项亮点,不但优先录取,薪资也随之一路攀升。

本专栏从大厂面试考察的 Go 语言核心知识点和能力出发, 但不囿于面试题的知识范畴。专栏每期针对一组 Go 语言经典例题,给出典型回答和考点分析,并会详细剖析其中所涉及的核心知识点,让你熟识题目背后所考察的知识与能力,助你架构起完整的 Go 语言知识体系。


作者简介

郝林,《Go 并发编程实战》作者,GoHackers 技术社群发起人,前轻松筹大数据负责人。

作为一名从业 13 年有余的资深技术专家,郝林从很早就开始关注 Go 语言,是国内知名的 Go 语言技术布道者,也是 Go 语言北京用户组和 GoHackers 社群的发起人和组织者。他出版的《Go 并发编程实战》一书,位列 Go 语言畅销书各大榜单首位。此外,郝林也负责公司中 Go 开发工程师的考核,有多年的 Go 语言面试官经验。




专栏模块

本专栏一共分成 3 大模块,5 个章节。



模块一:Go 语言基础知识

基础概念:讲述 Go 语言基础中的基础,包括一些基本概念和运作机制。它们都应该是你初识 Go 语言时必须知道的,同时也有助于你理解后面的知识。



模块二:Go 语言进阶技术

数据类型和语句:Go 语言中的数据类型大都是很有特色的,你只有理解了它们才能真正玩转 Go 语言。另外,也有怎样使用各种语法和语句的相关知识



模块三:Go 语言实战与应用

Go 程序的测试:很多程序员总以为测试是另一个团队的事情,其实不然。单元测试甚至接口测试其实都应该是程序员去做的,并且应该受到重视。本部分主要解答在 Go 语言中究竟应该怎样做好测试这件事。

标准库的用法:虽然 Go 语言提供了自己的高效并发编程方式,但是同步方法依然不容忽视。这些都是我们在日常工作中很可能会用到的。

Go 语言拾遗:这部分将会讲述一些我们使用 Go 语言做软件项目的过程中很可能会遇到的问题,至少会包含两篇文章,是附赠给广大 Go 语言爱好者的。



适宜人群

1. 希望获得更深层级进阶的 Go 语言使用者;

2. 希望夯实技术的 Go 语言学习者;

3. 有面试需求 / 晋升需求的开发者和在校生;

4. 希望精益求精掌握多门编程语言的开发工程师。





请支持正版

go语言从新手到就业,学习路径图!(附带学习教程),一步到位!

tantanya4 发表了文章 • 1 个评论 • 753 次浏览 • 2019-09-14 01:04 • 来自相关话题

Go语言并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 Go语言特色:简洁、快速、安全、并行、有趣、开源、内存管理、数组安全、编译迅速等。 Go入门指南 ...查看全部
Go语言并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。
Go语言特色:简洁、快速、安全、并行、有趣、开源、内存管理、数组安全、编译迅速等。
Go入门指南:
一:零基础的同学:(请选择这两门入门课程学习,可以说是最好的go语言入门教程了)
可能正准备入行或对编程刚开始感兴趣,对计算机、操作系统和网络方面的知识不太了解。无编程经验或者编程经验较少的同学:可能正在从事其他的技术相关工作,也许可以熟练编写脚本,但是对程序设计的通用知识和技巧还不太了解。有其他语言编程经验的同学:可能已经是程序员或软件工程师,可以用其他编程语言熟练编写程序,但对 Go 语言还不太了解


1:[Go语言从入门到实战——简明高效的Go语言实战指南](http://www.97yrbl.com/t-110.html)

2:[小白的福音:20小时快速入门Go语言](http://www.97yrbl.com/t-139.html)


二:有一定 Go 语言编程经验的同学:已有 Go 语言编程基础,写过一些 Go 语言程序的同学可以继续学习一下进阶实战课程【实战才能出真理,空有理论而没有实战项目能力一切皆是空】



1:[Google资深工程师深度讲解Go语言](http://www.97yrbl.com/t-60.html)

2:[Go实战仿百度云盘 实现企业级分布式云存储系统](http://www.97yrbl.com/t-71.html)

3:[Go语言实战流媒体视频网站](http://www.97yrbl.com/t-130.html)

4:[Golang公链项目实战](http://www.97yrbl.com/t-126.html)



三: 进阶高级知识点逐个击破,除了以上知识点以外,如果你想要进阶高级 Go 语言工程师,还需要通关以下的知识点。

1:[全流程开发 GO实战电商网站高并发秒杀系统](http://www.97yrbl.com/t-177.html)

2:[Go语言开发分布式任务调度 轻松搞定高性能Crontab](http://www.97yrbl.com/t-143.html)

3:[高并发&高性能 Go语言开发企业级抽奖项目](http://www.97yrbl.com/t-94.html)

4:[GO从0到1实战微服务版抢红包系统](http://www.97yrbl.com/t-78.html)


企业对于 Go 语言的使用情况也在逐年上升。自发布以来,Go 语言就深受明星大厂的喜爱,包括以 Java 打天下的阿里巴巴,更不用说深爱 Go 的滴滴、今日头条、小米、奇虎 360、京东等明星公司了,业界甚至一度看好 Go 语言有取代 Java 王者地位的潜力。
面对 c 位出道的 Go 语言,你还不赶快上手,提前学习一下。

GoCN为什么没有使用beego来搭建呢?

goalken 回复了问题 • 9 人关注 • 10 个回复 • 6235 次浏览 • 2019-08-13 18:13 • 来自相关话题

收集的go基础学习,项目实战,go-awesome的一些项目

gog 发表了文章 • 2 个评论 • 671 次浏览 • 2019-07-19 14:55 • 来自相关话题

收集的一些go基础学习,项目实战,go-awesome的一些项目,供大家学习,如果觉得好,请给个 star。 也希望大家能共建这个项目。 [项目地址](https://github.com/jiujuan/go-collec ...查看全部
收集的一些go基础学习,项目实战,go-awesome的一些项目,供大家学习,如果觉得好,请给个 star。

也希望大家能共建这个项目。
[项目地址](https://github.com/jiujuan/go-collection):https://github.com/jiujuan/go-collection

## 目录
- [awesome-go list](https://github.com/jiujuan/go-collection/blob/master/README.md#awesome-go)
- [awesome-go存储项目](https://github.com/jiujuan/go-collection/blob/master/README.md#go%E5%AD%98%E5%82%A8%E9%A1%B9%E7%9B%AE)
- [go基础学习系列](https://github.com/jiujuan/go-collection/blob/master/README.md#go%E5%9F%BA%E7%A1%80%E5%AD%A6%E4%B9%A0%E7%B3%BB%E5%88%97)
- [go项目实战](https://github.com/jiujuan/go-collection/blob/master/README.md#go%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98)
- [go源码分析](https://github.com/jiujuan/go-collection/blob/master/README.md#go%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90)
- [微服务](https://github.com/jiujuan/go-collection/blob/master/README.md#%E5%BE%AE%E6%9C%8D%E5%8A%A1)
- [go-micro](https://github.com/jiujuan/go-collection/blob/master/README.md#go-micro)
- [go-kit](https://github.com/jiujuan/go-collection/blob/master/README.md#go-kit)
- [Go书籍](https://github.com/jiujuan/go-collection/blob/master/README.md#Go%E4%B9%A6%E7%B1%8D)
- [其他](https://github.com/jiujuan/go-collection/blob/master/README.md#%E5%85%B6%E4%BB%96)

**欢迎大家Star**