go语言学习

2019-05-30  本文已影响0人  小灰_06e4

        最近在学习go语言,一段时间后真的被它的简洁性深深吸引了,因此特别的想推荐给其他的朋友。

1、适用领域

    “Go is especially well suited for building infrastructure like net worked servers, and tools and systems for programmers, but it is truly a general-purpose language and finds use in domains as diverse as graphics, mobile applications,and machine learning.”

    主要适合系统程序员编写一些基础组件,如网络服务器,分布式云管理器等,著名的docker、etcd即是用go编写

2、语言特点

    首先是语法简单,类C的语法设计,上手很快;

    自带垃圾回收机制,我以前是用C和C++的,C中的malloc和free一不小心就会出错,搞得人是相当头大,C++的new和delete亦是如此,尽管C++11中引入了智能指针,但是还是不如自动管理内存来的方便;

    对并发的原生的支持,通过Goroutine实现协程的概念,协程是比线程更细粒度的并发单位,因此并发度更高;Goroutine之间通过channel管道进行通信和同步,并发编程用起来特别方便;

    标准库功能强大,标准库作为语言自带的一部分,提供了网络、操作系统、数据库、加解密等各种功能的轮子,大大节约了程序员造轮子的时间,特别方便

    自带编译、测试、性能调优等丰富的工具

3、学习资料

3.1入门资料

1、书籍

An intorduction to go programming language

       短短160页的书,介绍了go基本的语法,很适合入门读

2、网站

Go by Example

通过代码示例讲解go语言基本知识点,真正的learn by doing,通过学习示例代码可以做到快速上手

3.2提高资料

1、书籍

Go in action

    这本书也比较精炼,全书240页,但难度较上本有所提高,涉及了一些go内置数据结构的底层实现、go runtime调度器原理,go对组成和多态的支持,以及一些go并发模式,是一本非常不错的资料

The go programming language

        这本号称go语言圣经,比较厚,有400来页,我本人不喜欢一上来看大部头的书,这本书比较全,可以作为一本参考书目,不懂得地方查阅一下

2、网站

Go语言趣味教材:并发不是并行

大牛讲解并发和并行的区别,获益良多

Go Concurrency from the Ground Up | doxsey.net

    一个简单的goroutine并发调度器的实现,虽然是个非常简陋的版本,但也可以研究下调度器底层实现的思路

3.3 提高项目

      本着learn by doing的思路,建议大家多用go做几个项目练练手,这里我十分推荐mit 6.824分布式课程的实验,总共4个实验,所有的实验都给了框架和详细的实验指南,并且网上有很多参考资料,虽然有些难度,但是做完以后会有很多收获的

https://pdos.lcs.mit.edu/6.824/schedule.html

上一篇 下一篇

猜你喜欢

热点阅读