Go语言核心36讲(导读)–学习笔记

目录

  • 开篇词 | 跟着学,你也能成为Go语言高手
  • 导读 | 写给0基础入门的Go语言学习者
  • 导读 | 学习专栏的正确姿势

开篇词 | 跟着学,你也能成为Go语言高手

Go 语言是由 Google 出品的一门通用型计算机编程语言。

Go 程序可以在装有 Windows、Linux、FreeBSD 等操作系统的服务器上运行,并用于提供基础软件支撑、API 服务、Web 服务、网页服务等等。

Go 语言也在移动端进行了积极的探索,现在在 Android 和 iOS 上都可以运行其程序。另外,Go 语言也已经与 WebAssembly 强强联合,加入了 WASM 平台。这意味着过不了多久,互联网浏览器也可以运行 Go 编写的程序了。

从公司角度看,许多大厂都已经拥抱 Go 语言,包括以 Java 打天下的阿里巴巴,更别提深爱着 Go 语言的滴滴、今日头条、小米、奇虎 360、京东等明星公司。同时,创业公司也很喜欢 Go 语言,主要因为其入门快、程序库多、运行迅速,很适合快速构建互联网软件产品,比如轻松筹、快手、知乎、探探、美图、猎豹移动等等。

下面,我们一起浏览一下本专栏的主要模块,一共分成 3 大模块,5 个章节。

  • 基础概念:我会讲述 Go 语言基础中的基础,包括一些基本概念和运作机制。它们都应该是你初识 Go 语言时必须知道的,同时也有助于你理解后面的知识。
  • 数据类型和语句:Go 语言中的数据类型大都是很有特色的,你只有理解了它们才能真正玩转 Go 语言。我将和你一起与探索它们的奥妙。另外,我也会一一揭示怎样使用各种语法和语句操纵它们。
  • Go 程序的测试:很多程序员总以为测试是另一个团队的事情,其实不然。单元测试甚至接口测试其实都应该是程序员去做的,并且应该受到重视。在 Go 语言中怎样做好测试这件事?我会跟你说清楚、讲明白。
  • 标准库的用法:虽然 Go 语言提供了自己的高效并发编程方式,但是同步方法依然不容忽视。这些方法集中在sync代码包及其子包中。这部分还涉及了字节和字符问题、OS 操控方法和 Web 服务写法等,这些都是我们在日常工作中很可能会用到的。
  • Go 语言拾遗:这部分将会讲述一些我们使用 Go 语言做软件项目的过程中很可能会遇到的问题。

导读 | 写给0基础入门的Go语言学习者

1. 你需要遵循怎样的学习路径来学习 Go 语言?

Go语言学习路线

image

2. 学习本专栏前,你需要有哪些基础知识储备?

  • 有一定的计算机基础,比如,知道操作系统是什么、环境变量怎么设置、命令行怎样使用,等等。
  • 具备一点点编程知识,比如,知道程序是什么、程序通常会以怎样的形式存在,以及程序与操作系统和计算机有哪些关系,等等。
  • 知道那些最最基本的网络知识。

从 2018 年开始,随着 Google 逐渐重回中国,Go 语言的官方网站在 Google 中国的域名下也有了镜像,毕竟中国是 Go 语言爱好者最多的国家,同时也是 Go 语言使用最广泛的一片土地。如果你在国内,可以敲入这个网址 //golang.google.cn/ 来访问 Go 语言的官网。

这个专栏专注于 Go 语言的核心知识,因此我并不会深入说明所有关于语法和命令的细枝末节。如果你想去全面了解 Go 语言的所有语法,那么可以去 Go 语言官网的语言规范页面 //golang.google.cn/ref/spec 仔细查阅。

如果你想专门学习一下 Go 命令方面的知识和技巧,那么我推荐你看看我之前写的免费开源教程《Go 命令教程 //github.com/hyper0x/go_command_tutorial 》。这份教程的内容虽然稍显陈旧,但是帮助你学会使用 Go 语言自带的常用命令和工具肯定是没问题的。

3. 这里有一份基础知识列表,请查收

Go 语言基础知识的导图

image

导读 | 学习专栏的正确姿势

实践的正确姿势

给大家的第一个建议一般都是“去写网络爬虫吧”。

互联网络的世界很庞杂,但又有一定的规律可循,是非常好的技术学习环境。你编写一个网络服务程序,即使放到了公共的网络上,也还需要考虑清楚一系列的问题,才能让你有足够多的技术磨炼机会,比如,服务的种类、功能、规则、安全、界面、受众、宣传和访问途径,以及日常的非技术性维护。

我们要让程序去模拟人的行为,模拟人使用网络浏览器访问网站内容的过程,而不是用尽计算力去疯狂地霸占人家的带宽和服务,否则那不就成了网络攻击了。这是一个非常重要的自我实践的技巧,请大家记住,“利己,但不要损人”。

注意,正常爬取网站内容并不意味着失去了高并发的应用场景。把内容下载下来只是一个开始,后边还有不少的工作要做呢。

单单“模拟人”这一点就需要花一些心思。而且,你可以同时爬取成千上万的同类甚至不同类的网站。这已经足够你研究和实践很长一段时间了。我在这里还要郑重地提示一下,做这类技术研究一定不要跨越道德的底线,更不能违反法律。

再进一步,我们最好以结构化的形式把爬取到的网络内容存储下来。当得到足够多的数据之后,你的选择就很多了。比如,对某类数据进行整理、提取和分析,从而挖掘出更有价值的东西。这就属于数据挖掘的范畴了。

在如今这个数据过剩的时代,这也是一项很重要的技能。又比如,基于这些数据提供统一的访问接口,制作成搜索引擎,甚至对外提供服务。这也是一个很有深度的选择。

优秀 Go 项目推荐

image

课程链接

//gk.link/a/10AqZ

知识共享许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: //www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。