golang高级编程教程
Why choose Go? Before I get into my list of Go learning resources, let me tell you about one of the most famous defections in all of programming history.
为什么选择去? 在进入Go学习资源列表之前,让我告诉您有关所有编程历史上最著名的缺陷之一。
There was a developer in the Node.js who was so prolific that many people believed he was not a real person. They theorized that he was actually a group of developers working under one name.
Node.js中有一个开发人员,他的生产力很高,以至于很多人认为他不是一个真正的人。 他们认为他实际上是一群以一个名字工作的开发人员。
That developer was TJ Holowaychuk. He authored many of the most-used npm packages, and contributed to key JavaScript libraries.
那个开发商是TJ Holowaychuk。 他编写了许多最常用的npm软件包,并为关键JavaScript库做出了贡献。
But he was indeed a real person. And one day in 2014, he decided to leave the Node community to focus on Go.
但是他确实是一个真实的人。 2014年的一天,他决定离开Node社区,专注于Go 。
Many people sat up in their chairs. Go?
许多人坐在椅子上。 走?
Yes. Go.
是。 走。
The language had reached the level of promise that even some of the most influential developers were moving toward it.
该语言已经达到了甚至某些最有影响力的开发人员都朝着它迈进的希望。
The Go community embraced TJ with open arms.
Go社区张开双臂拥抱TJ。
So why might such a developer prefer the relative simplicity and straight-forward syntax of Go over alternative back end languages?
那么,为什么这样的开发人员更喜欢Go的相对简单和直接的语法,而不是替代的后端语言?
For people like myself who are self taught, Go offered a great opportunity to dive into different areas of computer science and systems engineering.
对于像我这样自学成才的人们,Go提供了一个很好的机会,可以深入研究计算机科学和系统工程的不同领域。
Go is similar to C, but with memory safety and a runtime for built-in concurrency. And in that regard, it is far "closer to the metal", so to speak, when it comes to interfacing with the general primitives that underlie operating systems.
Go与C相似,但是具有内存安全性和内置并发性的运行时。 在这方面,可以说,与操作系统底层的通用基元接口时,它“更接近金属”。
I now mainly build distributed systems. Prior to learning Go, my background was – like TJ – mainly in Node and JavaScript. Node does many things well, but not concurrency. And Node is no longer the tool of choice for those working on distributed systems. Instead, Go has become the go-to language.
我现在主要构建分布式系统。 在学习Go之前,我的背景与TJ一样,主要是在Node和JavaScript中。 Node做得很好,但是并发性却不高。 对于在分布式系统上工作的人来说,Node不再是首选工具。 相反,Go成为了首选语言。
用一种语言去 (Go as a language)
Go is a statically typed compiled language famous for its straightforward, simple syntax. It addresses the common pitfalls of C while maintaining its performance and interoperability.
Go是一种静态类型的编译语言,以其简单明了的语法而闻名。 它解决了C的常见陷阱,同时保持了其性能和互操作性。
Despite this simplicity, Go is – at its heart – designed to handle concurrency. And it suffers from the complexity this entails.
尽管如此简单,但Go的本质还是旨在处理并发。 并且它遭受由此带来的复杂性。
Go is also quite idiomatic, which makes best practices a little elusive.
Go也很惯用,这使得最佳实践有点难以捉摸。
One of the most attractive features of Go is the ease of getting started. Learners often struggle to pick resources out of the thousands available.
Go最具吸引力的功能之一就是易于上手。 学习者常常很难从数千种可用资源中挑选资源。
With that in mind, here are some opinionated suggestions on where to start.
考虑到这一点,这里有一些从何入手的建议。
推荐书:Essential Go (Recommended Book: Essential Go)
Essential Go provides a comprehensive overview of the language. It is an excellent resource for beginners and intermediate learners alike.
Essential Go提供了对该语言的全面概述。 对于初学者和中级学习者而言,它都是极好的资源。
It covers the fundamental data structures of the language in depth.
它深入介绍了该语言的基本数据结构。
It also explains concurrency and Goroutines, giving insight into idiomatic best practice.
它还说明了并发和Goroutine,从而深入了解了惯用的最佳实践。
推荐书:小书 (Recommended Book: The Little Go Book)
Another good option for those look to get started quickly.
对于那些希望快速入门的人来说,另一个不错的选择。
The Little Go Book covers the basics. It may be outdated, but the fundamentals it covers have not changed.
Little Go Book涵盖了基础知识。 它可能已经过时了,但是它涵盖的基本原理并没有改变。
推荐课程:学习Go编程 (Recommended Course: Learn Go Programming)
freeCodeCamp's comprehensive 7-hour dive into Go. Best tackled in chunks, this is an excellent resource for beginners.
freeCodeCamp全面深入研究了7个小时的Go 。 最好分批处理,对于初学者来说,这是一个很好的资源。
The course content also makes it useful for intermediate Go programmers who want to recap different topics.
该课程的内容对于希望重述不同主题的中级Go程序员也很有用。
推荐的练习工具:通过测试学习围棋 (Recommended Practice Tool: Learn Go with Tests)
The best way to get started is to start writing code.
最好的入门方法是开始编写代码。
Learn Go With Tests is a great introduction for learning the ins and outs of the language.
学习测试是一个很好的介绍,旨在学习语言的来龙去脉。
推荐博客:Go编程语言博客 (Recommended Blog: The Go Programming Language Blog)
This is the de facto source of information on new features and best practice in Go.
这实际上是有关Go中新功能和最佳实践的信息源。
This blog has an excellent set of resources for developers.
该博客为开发人员提供了极好的资源。
New features, best practice and Go patterns are all described in detail here.
这里详细描述了新功能,最佳实践和Go模式。
推荐文档:GoDoc (Recommend Documentation: GoDoc)
GoDoc is the most used resource by Go developers.
GoDoc是Go开发人员最常使用的资源。
It is a single source for all documentation in the standard library and third party packages.
它是标准库和第三方程序包中所有文档的唯一来源。
Learners are encouraged to refer to this site as a first port of call.
鼓励学习者将此站点称为第一呼叫端口。
Once you've mastered the fundamentals of Go, this will be the only resource you need.
一旦掌握了Go的基础知识,这将是您唯一需要的资源。
推荐阅读:Go语言规范 (Recommended Read: The Go Language Specification)
Finally, the reference manual for Go is a great source of information for questions you'll have as you pick things up.
最终, Go的参考手册为您在提货时遇到的问题提供了大量信息。
As with any programming language, you will need to write code to improve. Go is flexible and has a broad variety of applications.
与任何编程语言一样,您将需要编写代码进行改进。 Go是灵活的,具有广泛的应用程序。
Find a project of interest and use Go, making particular use of GoDoc as you go along. A good place to start is https://tour.golang.org.
查找感兴趣的项目并使用Go,并随身使用GoDoc。 https://tour.golang.org是一个不错的起点。
golang高级编程教程