{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

如何学习go语言?

seanHaiseanHai 回答0 收藏1
收藏问题

10条回答

Yumenokanata

Yumenokanata

回答于2022-06-28 15:10

go(又称golang)是google的三位大牛罗伯特·格瑞史莫(Robert Griesemer), 罗勃·派克(Rob Pike)及肯·汤普逊(Ken Thompson)在2009年推出的编程语言,它是一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,很方便的支持协程,支持大并发。在后端开发,微服务,云计算方面应用比较广泛,目前国内很多一线互联网公司的服务都是用golang搭建,学好golang是很前途的。

我认为学好golang有如下三步骤:

1、阅读相关技术书籍

1)go语言程序设计(艾伦A. A. 多诺万著),golang语言基础,是入门首选

2)go语言圣经(Kernighan著),golang语言的权威著作,进阶首选

3)golang的官方文档(https://golang.org/pkg/)

4)golang大牛的演讲和blog()

2、参与开发相关golang项目

1)开始学习时,要边看书变学习,将书中的例子一定自己动手写一遍,运行调试一下。

2)边做项目边学习是成长最快的方法,一定要参与golang项目的开发,你的工作一定要是golang开发。

3、学习和参与优秀的开源项目

阅读优秀开源项目提升自己的技术水平和开阔一些视野

1)beego (https://github.com/astaxie/beego)

国产开源的高性能Web框架,让你快速的开发Go Web应用服务,谢大主笔

2)codis (https://github.com/CodisLabs/codis)

Codis是一个分布式Redis解决方案,其实就是一个数据库代理,让你在使用Redis集群的时候,就像使用单机版的Redis是一样的,对开发者透明。

3)docker (https://github.com/docker/docker)

无人不知的虚拟华平台,开源的应用容器引擎,借助该引擎,开发者可以打包他们的应用,移植到任何平台上。

4)kubernetes (https://github.com/kubernetes/kubernetes)

Google出品,用于调度和管理Docker的开源容器管理系统,利用他,可以方便的管理你的docker实例,哪怕非常多,也是目前最流行的docker管理系统。

5)golang (https://github.com/golang/go)

golang是开源的编程语言,可以阅读golang的源码提升自己

4、总结

经常总结,让经验沉淀下来,有条件可以写博客,也经常看看别人的技术博客

评论0 赞同0
  •  加载中...
gclove

gclove

回答于2022-06-28 15:10

以下是我为星球『Go项目实战』用户整理的新手如何学习Go语言的资源,分享给你。


学习任何东西,基础都很重要。基础就好比建筑的地基,只有地基牢固了,才能建成高楼大厦。

学习编程语言亦是如此。很多人喜欢一上来就学习各种框架,其实那些框架对你来说都是工具,你自己的基础好,懂得了它们的原理,自己也有能力创造更优秀的框架。


新手学习 Go 语言,推荐学习如下资源:(推荐按顺序学习)


1. 官方文档。(英文好的可以看英文 http://docs.studygolang.com 或者看如下列出的中文翻译版)有四个文档推荐阅读:

  • 1. Go 语言之旅 http://tour.studygolang.com/
  • 2. 语言规范 http://docscn.studygolang.com/ref/spec.old
  • 3. Effective Go http://docscn.studygolang.com/doc/effective_go.html
  • 4. FAQ http://docscn.studygolang.com/doc/faq
学习完以上的文档,对 Go 语言应该有了一个较全面的认识。但在学习的过程中,针对里面的代码应该实际动手敲,这样能够加深印象。

2. 接着看 《Go 语言圣经》中文版 https://books.studygolang.com/gopl-zh/ ,相信对 Go 语言基础会有更深的理解。

3. 再推荐的是《Go 语言实战》这本书,In Action系列都是比较经典的。

以上资料学习完后,你应该掌握了 Go 语言,但需要进行必要的实战。我们的 『Go项目实战』 知识星球目标之一就是为了巩固、加深对基础知识的掌握。

4. 基础知识扎实了,想进一步深入,可以学习如下书籍:

  • 1. 柴大的 《Go 语言高级编程》 https://books.studygolang.com/advanced-go-programming-book/
  • 2. 雨痕的 《Go 语言学习笔记》 https://github.com/qyuhen/book

评论0 赞同0
  •  加载中...
LuDongWei

LuDongWei

回答于2022-06-28 15:10

Go语言这几年发展的确实不错,虽然没有实现赶超C++的目标,但是已经很接近了。而这些年也出现了一些Go语言的有名的项目,比如 kubernetes、Docker、Etcd、Tidb等项目。

我这里整理了一份关于Go语言的学习路线,也可以辅助你做判断。

Go语言是一门全新的静态类型开发语言,具有自动垃圾回收、丰富的内置类型、函数多返回值、错误处理、匿名函数、并发编程、反射、defer等关键特征。从语言层面来说天然支持并发,可以充分利用CPU多核,并且非常适合用来进行服务器编程、网络编程和分布式编程等。

在云计算领域,用Go语言编写的云基础项目如Docker、Kubernetes都取得了巨大的成功,别外还有知名的项目如Etcd、consul、flannel等,也都是使用Go语言实现的。

为你提供几张学习Go语言的线路图,从基础到进阶、Web编程、微服务的学习,你可以参考一下。

基础学习

书籍推荐

《Head First Go语言程序设计》、《Go语言学习笔记》、《Go语言趣学指南》、《Go语言编程》

当然,不必所有的书都读,找其中一本学习即可。

在线学习Go语言资料

  1. Go By Example 中文版 : https://gobyexample-cn.github.io,使用代码示例来学习 Go 语言。
  2. Go 面试题 : http://www.topgoer.cn/docs/gomianshiti/mianshiti,也是使用代码示例来讲解 Go,用来准备面试也是很好的。
  3. 无闻大佬的在线入门指南 : https://github.com/unknwon/the-way-to-go_ZH_CN
  4. 跟着单元测试学习 Go : https://github.com/quii/learn-go-with-tests,有中文版。

初级练手项目

  1. starcharts : https://github.com/caarlos0/starcharts,项目的功能是生成 Github 上面的项目的 star 趋势图,核心代码不多,用来练手很合适。
  2. gorched : https://github.com/zladovan/gorched,使用 Go 写的一个小游戏。
  3. pacgo : https://github.com/danicat/pacgo,也是使用 Go 写的一个小游戏,每一步都有详细的描述和代码实现。
  4. wechat-go : https://github.com/songtianyi/wechat-go,微信 web 版 API 的 Go 实现,模拟微信网页版的登录/联系人/消息收发等功能。

Go语言进阶

书籍推荐

《Go程序设计语言》、《Go专家编程》、《Go语言高级编程》、《Go并发编程》

在线学习Go语言资料

1.《Go 语言设计与实现》: https://draveness.me/golang。

2.《Go 语言高级编程》: https://chai2010.cn/advanced-go-programming-book。

进阶练手项目

  1. rosedb : https://github.com/roseduan/rosedb,一个用 Go 实现的简易高效的 k-v 存储引擎。
  2. gochat : https://github.com/LockGit/gochat,一个 Go 语言实现的轻量级 im 系统,对网络方面熟悉或者感兴趣的可以看看。
  3. 7DaysGolang : https://github.com/geektutu/7days-golang,7 天使用 Go 从零实现 web 框架、分布式缓存、ORM 框架,、RPC 框架,代码量不多,但是质量挺不错的

Go Web编程

书籍推荐

《Go Web编程》

在线学习资料

可以学习下 web 框架 Gin、beego:两个框架都比较的流行,选择其中一个其实就可以了,推荐 Gin。官方文档都有中文,照着 demo 敲一下,了解下怎么处理 HTTP 请求的。

其次还需要掌握一下比较流行的 ORM 框架 Gorm,有官方中文文档,照着 demo 敲一下基本上两天就能掌握了,后面遇到不会的再来查。

Web框架相关的,基本上看官方文档就可以了,就不用再去找专门介绍的书籍,没有比官方文章更正宗的资料了。

除框架之外,你还需要学会的是包括但不限于:

  • web的逻辑,Http协议,grpc,session,cookie等这些web的基础知识
  • 数据库方面MySQL、Redis、MongoDB等
  • 中间件Kafka、Etcd等
  • 文件文件处理,XML、JSON、正则等
  • 安全与加密,预防CSRF攻击、XSS攻击、SQL注入等,加密解密等

Go Web项目推荐

  1. gin-vue-admin : https://github.com/flipped-aurora/gin-vue-admin,使用 Gin 框架构建的后台管理系统。
  2. ferry : https://github.com/lanyulei/ferry,基于 Gin + Vue + Element UI 前后端分离的工单系统。
  3. go-admin : https://github.com/go-admin-team/go-admin,Gin + Vue + Element UI 的前后端分离权限管理系统。

Go 微服务

目前 Go 在微服务中的应用也比较广泛,但说实话,微服务是一个太庞大的话题,你不可能把每一个核心的问题都能够搞清楚,而且也没条件,或许只能在公司的具体的微服务生产环境中,才能够对相关的概念有更加深刻的体会。

推荐一本微服务概述的基础书籍《微服务设计》、《微服务架构设计模式》,可以帮助你理解微服务的建模、集成、测试、部署和监控的一些基础知识。

其次,你可以看一下《Go微服务实战》这本书,看后半部分即可,里面其实介绍的还是关于微服务方面的知识。

推荐 Go 语言的微服务框架 GoKit、GoMicro、go-zero、kratos,可以随便选择一个,理解其基本的用法、设计等等。其中 go-zero 和 kratos 是国内开源的,因此都有比较详细的中文文档。

在线学习的资料:

https://ewanvalentine.io/microservices-in-golang-part-1

手把手实现一个简单的 Go 微服务项目,你可以通过这个项目来学习微服务的相关知识,并且有中文版。

Go语言原理研究

如果你对Go语言底层原理感兴趣的话,可以看下这本书《Go语言底层原理剖析》。

开源项目学习

在项目开发过程中,也会用到各种开源项目。一开始没必要直接钻研源码,先要学习开源项目背景,能解决什么问题,开源作者的项目理念,使用了哪些技术等等。

这些清楚以后,可以找自己感兴趣的技术点或者模块去针对性的学习,千万不要想着一开始就想一网打尽式的学习,没有针对性意味着没有重点,没有重点很大概率就会白学或者学到的就会很少。

先推荐几个经典的开源项目供你参考:

  • www.docker.com 使用 docker 来做虚拟化
  • https://github.com/nsqio/nsq 学习消息队列,学习 channel 和分布式
  • https://github.com/coreos/etcd分布式应用

如果你有自己比较看好的开源项目会更好,兴趣永远是前进的第一步。

相对前几年,Go语言的书籍、教程,各种文章都如雨后春笋一般越来越多,学习起来也更加方便,但是同时也要注意不要过度陷入知识碎片而无法自拔,最重要的还是要去系统去学习一下,针对性的练习、实践和应用。

评论0 赞同0
  •  加载中...
邱勇

邱勇

回答于2022-06-28 15:10

实践出真知,通过gobyexample这样的文档一步步去学习,基本上敲一遍能够入门了。然后接下来就是自己做一个小项目,可以从自己最拿手的领域做起,多看多写,时间沉淀久了自然就会了。

评论0 赞同0
  •  加载中...
graf

graf

回答于2022-06-28 15:10

golang越来越有优势,有什么学习路线没有?

golang学习比较简单,不过任何一门语言都不是孤立存在的,在这里简要说明一下golang开发的学习路线

1.golang基础,包括go语言安装,go语言语法,流程控制语句,函数,方法,面向对象概念,网络编程,并发编程等

2.golang开发框架,包括beego,gin,Iris,Echo等

3.微服务开发

4.深入的话还可以学习算法部分。如果要接触区块链相关技术的话,还需要学习区块链的加密算法等相关知识

5.如果要结合go实现应用的话,肯定离不开各种数据库,比如关系型数据库oracle、mysql,或者各类非关系型数据库等等

6.如果需要开发界面的话,还需要学习网页编程如html,javascript,vue,elementUI,bootstrap等网页开发技术和框架。

7.在以上学习的基础上还可以向架构方面深入学习。

链乔教育在线祝您学有所成。

评论0 赞同0
  •  加载中...
DTeam

DTeam

回答于2022-06-28 15:10

非常好的问题。首先我是有三年go语言开发经验的了。回答你这个问题之前,首先要理解如何学习go,是你要达到什么样的级别。就是目标,比如你要达到大师级别。或者你需要用go做什么开发工作?一定要先搞清楚需求,举个例子

1 我要如何学习go才能做web开发

2用go做ai 或者图像处理

3开发以太坊区块链

就web开发而言的话就不同领域需要画一个脑图,就是路线图,把达到目标之前的各个知识点列出来,比如基础go知识,变量,常量,slice. map struct channel go routine 并发等等 还有相关领域的开发工具,的脑图,比如goland vs code 还要需要的linux 命令行, dockers 等等相关路线图 还有gin 框架

但是如果要学图像 ai 区块链还要学习相关基础和框架,比如tensorflow 智能合约 opencv 如果只要学习基础请关注我的头条14天学会go语言,最重要的是要多练!谢谢

评论0 赞同0
  •  加载中...
layman

layman

回答于2022-06-28 15:10

对于初学一门语言的同学,一般会推荐一本经典入门书籍。按照惯例go语言我推荐《go语言圣经》。

书只是一方面。在学习习惯上,本人还是习惯带着问题去学习。何为带着问题学习呢?首先,要想想学习go语言的目的是什么?选个开发项目来练手,边学边做,带着问题有目的的学习语言 效率会很高。

当然,如果之前没接触过编程,可能前期需要看看入门的视频和实例,按照指导一步一步跟着动手实验。

总的来说,多动手,多想多总结,然后带着问题学习,学习效率应该很高了。

(图文无关)


评论0 赞同0
  •  加载中...
Shonim

Shonim

回答于2022-06-28 15:10

5月20日工业和信息化部信息中心发布《2018中国区块链产业白皮书》,Go语言与区块链成为“数字中国”建设的重要支撑,go语言由此被提起!

Go语言热度攀升,市场薪资居高不下

据BOSS直聘研究院数据显示2018年Go语言与区块链职位月薪11000元以上占整体的95.5%

为什么Go语言被众多名企青睐?

区块链主流编程语言

简单易学开发速度快

Go语言并发性好

如何学习GO语言:

可以到黑马程序员看一下这些GO语言的教程哦!也可以后台回复:go语言

评论0 赞同0
  •  加载中...
tianren124

tianren124

回答于2022-06-28 15:10

先来看看什么是go语言:

Go语言是谷歌2009发布的第二款开源编程语言。

Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。

学习编程语言,主要的需要做到三点:

  • 基础知识要学好。

  • 学会抄代码,直到自己能倒写如流!

  • 学会自己写代码,只有自己会写代码了,才是真正的学会了!

基础知识要学好

都说“欲速则不达”,么有扎实的基本功,怎么能更好的学习!就像建房子,首先要有地基,之后才能往上盖,这样就不会坍塌!

推荐入门视频:20小时快速入门go语言

学会抄代码

当你把基础学完之后,要想更好的掌握,就可以考虑抄代码了!我们开始写代码都是没什么思路,也无从下手,但是我们可以模仿别人写代码,上海俗话里面常说"吃大户,用大户,消灭大户",我们就是"看代码,抄代码,最后自己写代码"

自己写代码

当你可以写代码的时候,就说明对GO有了很好的了解,这时候就要自己做项目了。

关于学习视频,楼楼可以找我要哦,关于对GO学习,大家也可踊跃参加,欢迎指正批评!

评论0 赞同0
  •  加载中...
khs1994

khs1994

回答于2022-06-28 15:10

go语言语法简单,有编程基础的学起来不困难,上手很快的。语法弄明白之后就是他的数据类型,已经go语言的OOP。有了一定基础之后可以看一些开源项目的源码,帮助很大的。之后自己可以动手写一下小的项目,网络编程的聊天室等等。其实go可以说的上是拿过来就可以用的语言,所以学习不要有压力,多看看视频,多动手。

评论0 赞同0
  •  加载中...

相关问题

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<