Go语言学习路线 - 4.入门篇:快速体系化地入门Go语言

简介: 如今互联网资料泛滥,入门编程语言的途径有很多种选择,但如果要我推荐,只有一个建议 - 研读一本该编程语言最优秀的基础书籍。 对于Go语言,我推荐 《Go程序设计语言》(The Go Programming Language),也被称为 Go语言圣经。

从一本书入门Go语言

如今互联网资料泛滥,入门编程语言的途径有很多种选择,但如果要我推荐,只有一个建议 - 研读一本该编程语言最优秀的基础书籍

对于Go语言,我推荐 《Go程序设计语言》(The Go Programming Language),也被称为 Go语言圣经。参考链接:当当链接网页版链接

我认为,尽量避免只通过网上的博客或视频去学习基础。

体系化 是建立知识体系最重要的一点。网上的资料最缺乏的就是 体系化,而经典书籍都经过了反复的精雕细琢。

虽然这本书很经典,但在新手在学习的过程中还是会遇到三个经典的疑问:

  • 这本书出版已经有4年多,是否有些知识点已经 过时
  • 书籍中的知识点有深有浅,新手只想快速入门,该如何 权衡知识点
  • 书中的知识点虽然是体系化的,但新手很难 串联 起来。

所以,本章的核心是为了解决上面三个问题的,也可以认为是我对于 Go语言圣经的导读

基础因人而异,根据自己的实际情况适当提高或降低预期。

1. 了解背景

范围

  • 出版者的话、译者序、前言

  • 第1章 入门 (不需要对着示例敲代码)

导读

每门编程语言都有自己的背景和思想,了解这块对新手来说很有必要。如果上来就直接看一些基础语法,就会感觉是在 拼凑知识点

所以,好好读一读这部分内容,建立自己在整体上对Go语言的认识

2. 基础语法点

范围

  • 第2章 程序结构 (难点:指针、引用)
  • 第3章 基本数据 (难点:字符串的编码UTF-8相关知识)
  • 第4章 复合数据类型
  • 第5章 函数(跳过:函数变量、匿名函数)

导读

这块内容是最基础的,需要对着具体例子敲代码、并跑通。

上面指出的难点,如果不能快速掌握就跳过,入门学习没必要扣每个细节

至此,你已经掌握了最常见的Go语言用法了。

3.面向对象编程

范围

  • 第6章 方法
  • 第7章 接口

导读

这部分的语法并不难,关键点在于慢慢接触 学习面向对象编程的理念

面向对象 是一个博大精深的话题,这点需要长期的实践与体验,不用急于一时。

如果对 面向对象 这个名词不熟悉的,先去搜搜科普贴,再回头理解这2章的内容。

建议Go语言入门后,跳出具体编程语言的视角,好好地理解一下面向对象的思想。

4. 并发编程

范围

  • 第8章 goroutine和通道
  • 第9章 使用共享变量实现并发

导读

并发编程一直都是各编程语言的一大难点,而Go语言将其语法设计得非常简洁,相对更容易学习。

学习并发这块,不仅仅需要大家去 扣每行代码的逻辑 ,更要了解 这些并发语法是为了解决什么问题

纯编程新手对并发编程的理解需要一个过程,如果不能快速掌握也不用心浮气躁。

要真正地了解并发,那就得学习操作系统的相关知识。

5. 函数式编程

范围

  • 第5章 函数(函数变量、匿名函数)

导读

Go语言支持一定的函数式编程能力。函数式编程是对传统过程性编码思维的一种突破,新手了解基本使用方法即可。

匿名函数这块的玩法很有意思,也是面试的高频考点。

6. Go语言的工程化

范围

  • 第10章 包和go工具(简单通读里面的一些思想即可,最新的包管理已经完全采用go mod
  • 第11章 测试

导读

Go的包管理工具几经波折,目前已经由go mod一统江湖了。go mod的资料可以参考 官方博客。但由于国内下载部分库有限制,可以参考搜索引擎进行配置。

而对于测试部分,我个人觉得 官方提供的原始功能并不好用,初学者写几个示例了解即可,后续在大型项目中还是需要一定的工具辅助。

7. 底层知识

范围

  • 第12章 反射
  • 第13章 低级编程(cgo直接忽略)

导读

入门的新手浏览一遍即可,无需深入思考。大家需要了解的就是2点:

  1. 反射reflect 是将 数据和程序结构 互相转换的工具
  2. unsafe 是直接操作 计算机地址 的工具

在实践中遇到具体问题时,再去针对性地学习。

结束语

总体来看,入门Go语言的关键放在 2、3、4 三点即可,也就是 第2~9章,多敲代码、反复品读。

为了让大家更好地阅读书籍,我再补充三个建议:

  1. 结合上下文理解难点 - 每个知识点都不是独立的,一定要了解上下文,切忌上来就敲代码;
  2. 用文字背后的思想组织成体系化 - 串联知识点的,并不是具体代码,而是相关的文字说明,多多琢磨背后的思想;
  3. 对复杂知识点,暂时降低预期,做长期建设 - 像面向对象、并发编程、函数式编程等 高阶内容,不可能只通过学习Go语言就能掌握;
目录
相关文章
|
7月前
|
Linux Go iOS开发
Go语言100个实战案例-进阶与部署篇:使用Go打包生成可执行文件
本文详解Go语言打包与跨平台编译技巧,涵盖`go build`命令、多平台构建、二进制优化及资源嵌入(embed),助你将项目编译为无依赖的独立可执行文件,轻松实现高效分发与部署。
1260 162
|
6月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
563 4
|
6月前
|
Cloud Native 安全 Java
Go语言深度解析:从入门到精通的完整指南
🌟蒋星熠Jaxonic,Go语言探索者。深耕云计算、微服务与并发编程,以代码为笔,在二进制星河中书写极客诗篇。分享Go核心原理、性能优化与实战架构,助力开发者掌握云原生时代利器。#Go语言 #并发编程 #性能优化
605 43
Go语言深度解析:从入门到精通的完整指南
|
6月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
356 2
|
7月前
|
Cloud Native 安全 Java
Go语言深度解析:从入门到精通的完整指南
🌟 蒋星熠Jaxonic,执着的星际旅人,用Go语言编写代码诗篇。🚀 Go语言以简洁、高效、并发为核心,助力云计算与微服务革新。📚 本文详解Go语法、并发模型、性能优化与实战案例,助你掌握现代编程精髓。🌌 从goroutine到channel,从内存优化到高并发架构,全面解析Go的强大力量。🔧 实战构建高性能Web服务,展现Go在云原生时代的无限可能。✨ 附技术对比、最佳实践与生态全景,带你踏上Go语言的星辰征途。#Go语言 #并发编程 #云原生 #性能优化
|
8月前
|
Cloud Native Go API
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
551 0
|
8月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
374 0
|
8月前
|
Cloud Native Java 中间件
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
434 0
【Go语言入门100题】026 I Love GPLT (5 分) Go语言 | Golang
L1-026 I Love GPLT (5 分) Go语言|Golang 这道超级简单的题目没有任何输入。 你只需要把这句很重要的话 —— “I Love GPLT”——竖着输出就可以了。 所谓“竖着输出”,是指每个字符占一行(包括空格),即每行只能有1个字符和回车。
747 0
|
存储 Go
【Go语言入门100题】023 输出GPLT (20 分) Go语言 | Golang
L1-023 输出GPLT (20 分) Go语言|Golang 给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。 下面给出甲、乙两人的酒量(最多能喝多少杯不倒)和划拳记录,请你判断两个人谁先倒。
253 0