你好,我是郝林。今天想跟你聊聊我和Go语言的故事。

Go语言是由Google出品的一门通用型计算机编程语言。作为在近年来快速崛起的编程语言,Go已经成功跻身主流编程语言的行列。

它的种种亮点都受到了广大编程爱好者的追捧。特别是一些对团队协作有较高要求的公司和技术团队,已经在有意识地大量使用Go语言编程,并且,使用的人群还在持续迅猛增长。

我个人很喜欢Go语言。我是从2012年底开始关注Go语言的,虽然这个日期与Go语言诞生的2009年11月10日相比并不算早,但我也算得上国内比较早期的使用者了。

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

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

从业务维度看,在云计算、微服务、大数据、区块链、物联网等领域,Go语言早已蓬勃发展。有的使用率已经非常之高,有的已有一席之地。即使是在Python为王的数据科学和人工智能领域,Go语言也在缓慢渗透,并初露头角。

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

我从2013年开始准备撰写《Go并发编程实战》这本书,在经历了一些艰辛和坎坷之后,本书终于在2014年底由人民邮电出版社的图灵公司正式出版。

时至今日,《Go并发编程实战》的第2版已经出版一年多了,也受到了广大Go语言爱好者的欢迎。同时,我也发起和维护着一个Go语言爱好者组织GoHackers,至今已有近4000人的规模。我们每年都会举办一些活动,交流技术、互通有无。当然,我们平常都会在一些线上的群组里交流。欢迎你的加入。

2015年初,我开始帮助公司和团队招聘Go程序员。我面试过的Go程序员应该已经有几百个了。虽然一场面试的交流内容远不止技术能力这种硬技能,更别提只限于一门编程语言。

但是就事论事,我在这里只说Go语言。在所有的应聘者当中,真正掌握Go语言基础知识的比例恐怕超不过50%,而真正熟悉Go语言高阶技术的比例也不超过30%。当然了,情况是明显一年比一年好的,尤其是今年。

我写此专栏的初衷是,让希望迅速掌握Go语言的爱好者们,通过一种比较熟悉和友好的路径去学习。我并不想事无巨细地去阐述Go语言规范的每个细节以及其标准库中的每个API,更不想写那种填鸭式的教学文章,我更想去做的是详细论述这门语言的重点和主线。

我会努力探究我们对新技能,尤其是编程语言的学习方式,并以这种方式一步步带领和引导你去记忆和实践。我几乎总会以一道简单的题目为引子,并以一连串相关且重要的概念和知识为主线,而后再进行扩充,以助你进行发散性的思考。

我希望用这种先点、后线、再面的方式,帮你占领一个个重要的阵地。别的不敢说,如果你认真地跟我一起走完这个专栏,那么基本掌握Go语言是肯定的。

为什么说基本掌握?因为软件技术,尤其是编程技术,必须经过很多的实践甚至历练才能完全掌握,这需要时间而不能速成。不过,本专栏一定会成为你学习Go语言最重要的敲门砖和垫脚石。

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

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

  • 数据类型和语句:Go语言中的数据类型大都是很有特色的,你只有理解了它们才能真正玩转Go语言。我将和你一起与探索它们的奥妙。另外,我也会一一揭示怎样使用各种语法和语句操纵它们。

  • Go程序的测试:很多程序员总以为测试是另一个团队的事情,其实不然。单元测试甚至接口测试其实都应该是程序员去做的,并且应该受到重视。在Go语言中怎样做好测试这件事?我会跟你说清楚、讲明白。

  • 标准库的用法:虽然Go语言提供了自己的高效并发编程方式,但是同步方法依然不容忽视。这些方法集中在sync代码包及其子包中。这部分还涉及了字节和字符问题、OS操控方法和Web服务写法等,这些都是我们在日常工作中很可能会用到的。

  • Go语言拾遗:这部分将会讲述一些我们使用Go语言做软件项目的过程中很可能会遇到的问题,至少会包含两篇文章,是附赠给广大Go语言爱好者的。虽然我已经有一个计划了,但是具体会讲哪些内容我还是选择暂时保密。请你和我一起小期待一下吧。

我希望本专栏能帮助或推动你去做更多的实践和思考。同时我也希望,你能通过学习本专栏感受到学习的快乐,并能够在应聘Go语言相关岗位的时候更加游刃有余。

所以,如果学,请深学。我不敢自称布道师,但很愿意去做推广优秀技术的事情。如果我的输出能为你的宝塔添砖加瓦,那将会是我的快乐之源。我也相信这几十篇文章可以做到这一点。

Go语言核心36讲的更多相关文章

  1. Go语言核心36讲(导读)--学习笔记

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

  2. Go语言核心36讲(Go语言进阶技术八)--学习笔记

    14 | 接口类型的合理运用 前导内容:正确使用接口的基础知识 在 Go 语言的语境中,当我们在谈论"接口"的时候,一定指的是接口类型.因为接口类型与其他数据类型不同,它是没法被实 ...

  3. Go语言核心36讲(Go语言进阶技术十六)--学习笔记

    22 | panic函数.recover函数以及defer语句(下) 我在前一篇文章提到过这样一个说法,panic 之中可以包含一个值,用于简要解释引发此 panic 的原因. 如果一个 panic ...

  4. Go语言核心36讲(Go语言实战与应用一)--学习笔记

    23 | 测试的基本规则和流程 (上) 在接下来的日子里,我将带你去学习在 Go 语言编程进阶的道路上,必须掌握的附加知识,比如:Go 程序测试.程序监测,以及 Go 语言标准库中各种常用代码包的正确 ...

  5. Go语言核心36讲(Go语言实战与应用三)--学习笔记

    25 | 更多的测试手法 在本篇文章,我会继续为你讲解更多更高级的测试方法.这会涉及testing包中更多的 API.go test命令支持的,更多标记更加复杂的测试结果,以及测试覆盖度分析等等. 前 ...

  6. Go语言核心36讲(Go语言实战与应用四)--学习笔记

    26 | sync.Mutex与sync.RWMutex 从本篇文章开始,我们将一起探讨 Go 语言自带标准库中一些比较核心的代码包.这会涉及这些代码包的标准用法.使用禁忌.背后原理以及周边的知识. ...

  7. Go语言核心36讲(Go语言实战与应用十四)--学习笔记

    36 | unicode与字符编码 在开始今天的内容之前,我先来做一个简单的总结. Go 语言经典知识总结 在数据类型方面有: 基于底层数组的切片: 用来传递数据的通道: 作为一等类型的函数: 可实现 ...

  8. Go语言核心36讲(Go语言实战与应用十八)--学习笔记

    40 | io包中的接口和工具 (上) 我们在前几篇文章中,主要讨论了strings.Builder.strings.Reader和bytes.Buffer这三个数据类型. 知识回顾 还记得吗?当时我 ...

  9. Go语言核心36讲(Go语言实战与应用二十二)--学习笔记

    44 | 使用os包中的API (上) 我们今天要讲的是os代码包中的 API.这个代码包可以让我们拥有操控计算机操作系统的能力. 前导内容:os 包中的 API 这个代码包提供的都是平台不相关的 A ...

  10. Go语言核心36讲(Go语言实战与应用二十四)--学习笔记

    46 | 访问网络服务 前导内容:socket 与 IPC 人们常常会使用 Go 语言去编写网络程序(当然了,这方面也是 Go 语言最为擅长的事情).说到网络编程,我们就不得不提及 socket. s ...

随机推荐

  1. SpringMVC 04: SpringMVC中4种页面跳转方式

    转发和重定向的页面跳转方式 页面跳转方式,本质上只有2种方式:转发 + 重定向 但在SpringMVC的具体实现上,转发可以细分为:普通的页面转发 + 经由action方法的页面转发 重定向可以细分为 ...

  2. HBase集群部署与基础命令

    HBase 集群部署 安装 hbase 之前需要先搭建好 hadoop 集群和 zookeeper 集群.hadoop 集群搭建可以参考:https://www.cnblogs.com/javammc ...

  3. PostgreSQL 时间函数分类与特性

    KingbaseES 时间函数有两大类:返回事务开始时间和返回语句执行时的时间.具体函数看以下例子: 1.返回事务开始时的时间 以下函数返回事务开始的时间(通过 begin .. end 两次调用结果 ...

  4. JS中如何删除某个父元素下的所有子元素?

    JS中如何删除某个父元素下的所有子元素?这里我介绍几种方法: 1.通过元素的 innerHTML 属性来删除 这种方式我觉得是最有方便的,直接找到你想要的父元素,直接令其 element.innerH ...

  5. Java 多线程:锁(一)

    Java 多线程:锁(一) 作者:Grey 原文地址: 博客园:Java 多线程:锁(一) CSDN:Java 多线程:锁(一) CAS 比较与交换的意思 举个例子,内存有个值是 3,如果用 Java ...

  6. Kubernetes后台数据库etcd:安装部署etcd集群,数据备份与恢复

    目录 一.系统环境 二.前言 三.etcd数据库 3.1 概述 四.安装部署etcd单节点 4.1 环境介绍 4.2 配置节点的基本环境 4.3 安装部署etcd单节点 4.4 使用客户端访问etcd ...

  7. saas 服务多语言 SDK

    简介 saas 服务一般提供了一个文档来描述提供的 OpenAPI,然会每个用户根据文档自己实现签名.调用等功能的封装,这部分会出现各种各样的问题,因此用户更希望平台直接提供一个 SDK. darab ...

  8. 有偿提供ES 7.X和8.X 版本 的白金版和企业版 使用咨询服务

    若有意向,可通过下方的邮箱发邮件进行咨询,非诚勿扰.. 邮箱地址:sandu12345@msn.cn

  9. MinIO 快速入门指南

    官方文档地址:http://docs.minio.org.cn/docs/ MinIO 是在 GNU Affero 通用公共许可证 v3.0 下发布的高性能对象存储. 它是与 Amazon S3 云存 ...

  10. Elastic:使用Grafana监视 Elasticsearch