Go语言学习

本文最后更新于2015年11月8日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

=1.why=
  • 互联网时代的C语言
  • 语言级别的并行支持(Python的多线程那叫一个鸡肋)
  • 语法学习起来相对来说比较简单(在有了C/Python/PHP的编程经验之后)
  • 想尝试一门新语言
=2.how=

the way i learn Golang(website/book/blog)

=3.what=

就我而言,我现在的学习顺序是:

1.先看

逐个例子的看,慢慢的改例子,然后运行;确保自己理解教程中给出的每一行代码,以及说明文字。

2.再看

《Go语言程序设计(Programming in Go)》

少废话,多动手。边干边学效率是最高的。

3.练习
  • 用 Golang 实现平时需要的一些小功能
  • Project Eular (每学一门新语言的时候,可以做一遍ProjectEular,复习语法和熟悉特性)

{

  • 字符串操作
  • 文件操作(内容查找、logging、日志分析、IP库分析、配置文件解析、Json解析、XML解析)
  • 数据库操作(MySQL、Postgres、Redis、Mongodb)
  • 网络编程(爬虫、暴力破解、网络包抓取/解析)
  • 正则表达式
  • 加解密、哈希算法
  • 去重、排序
  • 压缩、解压缩
  • 日期操作、邮件操作
  • Web开发
  • 性能调试

}

4.特性了解
  • 字符和字符串,切片slice,映射map,指针
  • if / switch / for[…range]
  • defer / panic / recover
  • init() / main()
  • goroutine / select / channel
  • package的组织形式
5.源码阅读
  1. 暂时只能看一些简单的源代码片段;
  2. 待对Golang的package的组织形式熟悉了一些之后开始找复杂的源码进行阅读学习;
  3. #ToLearn#
6.项目练习/编写(还没开始……)

……Null……


我觉得学习一门语言最重要的就是做到三点,第一看基础知识,第二学习抄代码,第三学习写代码。

学习某个语言要知道某个语言擅长和不擅长的地方,要会灵活运用、要会扬长避短。在学习了基础的知识(语法)之后,找个目标项目(你所在领域的某些算法或者业务,可以用该种语言实现)去做,一点点积累、思考,只有做项目才能串联所学的知识点、加深对该语言的认识和编程能力。

参考链接:

=EOF=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/2521.html

《Go语言学习》上有17条评论

  1. 系统学习GO,推荐几本靠谱的书?
    https://www.zhihu.com/question/30461290
    https://github.com/wonderfo/wonderfogo/wiki
    http://www.flysnow.org/categories/Golang/

    基础推荐官方文档,没有什么比这个更清晰了。
    其次参考Go指南,练习一遍;
    然后再结合《Go语言圣经》这本书,深入理解Go的基础;
    然后通过《Go语言实战》这本书进行实践;
    最终再通过一些别的第三方库源代码和实践,就可以完全掌握了。

  2. Go 语言编程中——「指针」和「值」在参数以及返回值中的选择
    Pointers vs. values in parameters and return values
    https://stackoverflow.com/questions/23542989/pointers-vs-values-in-parameters-and-return-values

    Methods using receiver pointers are common; the rule of thumb for receivers is, "If in doubt, use a pointer." 使用接收指针的方法很常见,接收类型的一个法则就是——如果有疑问,使用指针就行。

    Slices, maps, channels, strings, function values, and interface values are implemented with pointers internally, and a pointer to them is often redundant.
    切片、字典、通道、字符串、函数以及接口,它们内部都是通过指针来实现的,所以指向它们的指针通常是多余的。

    Elsewhere, use pointers for big structs or structs you'll have to change, and otherwise pass values, because getting things changed by surprise via a pointer is confusing.
    在其他地方,当要对大的结构体或者你必须改变的结构体使用指针的方式;其它的地方就用传递值的方式,因为通过传递指针而导致内容被意外地改变是比较令人困惑的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注