go语言开发入门:GO 开发者对 GO 初学者的建议

科工人 等级 668 0 0
标签: go语言Golang

以促进 India 的 go 编程作为 GopherConIndia 承诺的一部分。我们采访了 40 位 Gophers(一个 Gopher 代表一个 GO 项目或是任何地方的 GO 程序员),得到了他们关于 GO 的意见。如果你正好刚刚开始 go 编程,他们对于我们一些问题的答案可能会对你有非常有用。看看这些。

go语言开发入门:GO 开发者对 GO 初学者的建议

应该做:

通读 the Go standard library 和 Effective Go,为了学习 GO 的规范,Effective Go 是被高度推荐的,尤其是如果你有其他语言的背景。

在 Go tour 上做练习

看完语言参考

练习 Go by Example,而不仅仅是复制粘贴!

坚持编写 GO 代码,在几周内你将会在这门语言上变得高效

理解接口的功能,他们是 GO 最大的礼物之一,可能比 channels 和 goroutines 还重要。这个关于接口的文章 article on interfaces 和 Andrew Gerrand 在 GopherCon 2014 上的 keynote 接口的描述 会对你非常有帮助。

抛弃你的 OO 的思想包袱,如果你来自于其他语言,比如动态语言 Python 或是 Ruby,或者是一个编译型语言如 Java 或 C#。GO 是一个面向对象的语言,但是它不是一个基于 class 的语言和不支持继承。

了解继承从 GO 语言中移除了。实践组合的用法而不是继承的机会显现了,并且纠结于继承只会导致你沮丧

不要以其他语言的风格编写 GO

寻找更加有经验的 Gophers,他们能帮助你 review 代码片段和给你反馈。在 GO 社区能得到真正的支持和帮助

用 GO 实现你想法中的一个项目或是找到一个项目来工作。然后随着你学习的更多,不断重构你的应用。利用邮件列表和参加 Gopher Academy Slack group 来见其他的 Gophers 来得到帮助。Dave Cheney 的博客和 GoingGo 的博客也是一个非常好的开始

不要等待泛型和函数式被添加进语言;屏住呼吸并学习爱上我们在今天拥有的这门语言

给 go 初学者分享的一些问题

对于任何人来说学习一门新语言可能都是令人挫折的。GO 社区是不可置信的活跃,你不是孤单的。利用所有的文档,博客,本地的 Meetups 和用户组,比如 Slack。不要害怕问问题和参与

如果你对 GO 感兴趣,使用它的一侧涉足,或是专业的使用它,如果本地有 Go meetup,考虑参与。如果你有货,考虑去分享它

如果你有计划旅行,并且有能力,努力去访问 GO 社区目的地

来访的用户群体是个证明这个社区有众多的用户,支持者和雇员的途径

不要浪费时间去和其他语言比较,如果你喜欢 GO,就爱上他并且去使用它

接受 Go 的文化和 GO 做事情的方式。你的代码会感谢你,如果你这样做了,你会得到很多

不要冲动的引入依赖

简单是 GO 最重要的特征。避免过分设计,使用简单的代码片段而不是单一的庞大的代码库

从其他语言移植库到 GO 是一个很好的做法,它允许你剥离他人的代码并且以符合 GO 语言的方式粘合起来。

收藏
评论区

相关推荐

Golang高阶:Golang1.5到Golang1.12包管理
版权所有,转载请注明:http://www.lenggirl.com/go/gomod.html(https://links.jianshu.com/go?tohttp%3A%2F%2Fwww.lenggirl.com%2Fgo%2Fgomod.html) 1. 前言 Golang 是一门到如今有十年的静态高级语言了,2009年的时
Golang指南:顶级Golang框架、IDE和工具列表
自推出以来,Google的Go编程语言(Golang)越来越受主流用户的欢迎。在2016年12月的一份调研中,3,595名受访者中有89%表明他们在工作中或工作以外用Go语言编程。 此外,在编程语言中,Go语言在专业知识和偏好方面排名最高。2017年7月,在Tiobe的年度编程语言排名(https://www.tiobe.com/tiobeindex
godoc 命令和 golang 代码文档管理
介绍 godoc 是 golang 自带的文档查看器,更多的提供部署服务 go doc 和 godoc 在 golang 1.13 被移除了,可以自行安装 golang.org go1.13 godoc(https://links.jianshu.com/go?tohttps%3A%2F%2Fgolang.org%2Fdoc%2Fg
为什么GOPROXY对Golang开发如此重要
为什么GOPROXY对Golang开发如此重要 引言 从Go 1.13开始,Go Module作为Golang中的标准包管理器,在安装时自动启用,并附带一个默认的GOPROXY。 但是对于其他的GOPROXY选项,比如JFrog GoCenter,以及你自己的Go Module包,你需要在公众视野中保持安全,你应该选择什么样的配置? 你怎样才能
【Golang】Go入门及进阶书籍推荐
Go入门教程全集 链接: https://pan.baidu.com/s/1mWD7DpRa56WXi7WmNaohOg(https://pan.baidu.com/s/1mWD7DpRa56WXi7WmNaohOg) 提取码: ki1e Cloud.Native.Go.pdf C和指针.pdf C面向对象多线程编程.pdf Design Patt
【Golang】GoWeb框架之Gin-简明教程
Gin 简介 Gin is a HTTP web framework written in Go (Golang). It features a
【程序人生】毕业入职后,C++转Go语言工作半年感受
我在大学期间就听说了Go并学习了一段时间,坦白的说,那时候对Go是比较无感的,因为并 没有看到Go特别亮眼的地方,可能和我使用C、C、Java有关,这三
Golang中常用的字符串操作
Golang中常用的字符串操作 一、标准库相关的Package go import( "strings" ) 二、常用字符串操作 1. 判断是否为空字符串 1.1 使用“”进行判断 思路:直接判断是否等于""空字符串,由于Golang中字符串不能为 nil,且为值类型,所以直接与空字符串比较即可。 举例: go
深入理解 Go Slice
(https://imghelloworld.osscnbeijing.aliyuncs.com/0ce8a8773a658d4b843e5796a0dbf001.png) image 原文地址:深入理解 Go Slice(https://github.com/EDDYCJY/blog/blob/master/golang/pkg/20
go 语言资源整理
Awesome GitHub Topic for Go(https://links.jianshu.com/go?tohttps%3A%2F%2Fgithub.com%2Ftopics%2Fgolang) Awesome Go(https://links.jianshu.com/go?tohttps%3A%2F%2F
我的golang基础
库查询 https://gowalker.org/你应该$HOME/.profile文件增加下面设置。 搭建go的环境 step1:去golang的官网下载go的安装包 windows:go1.9.2.....msi mac:go1.9.2......pkg 双击傻瓜式安装 linux:go1.9.2.linuxamd64.tar.gz 默认到下
go语言开发入门:GO 开发者对 GO 初学者的建议
以促进 India 的 go 编程作为 GopherConIndia 承诺的一部分。我们采访了 40 位 Gophers(一个 Gopher 代表一个 GO 项目或是任何地方的 GO 程序员),得到了他们关于 GO 的意见。如果你正好刚刚开始 go 编程,他们对于我们一些问题的答案可能会对你有非常有用。看看这些。应该做:通读 the Go standard
go mod环境搭建
前言go mod 是golang最新的模块依赖管理的工具,推荐使用。 go 1.11通过设置环境变量GO111MODULE来决定是否启用 go1.13已经默认支持,以下以1.13为例配置环境变量 export GOPROXY 或 export GOPROXY export GOPATH"/Users/XXX
go run main.go undefined? golang main包那点事
最近把我的ss项目做了一下结构调整,一顿重构后,输入go run main.go,编译报错function undefined。额,怎么回事明明把函数定义在main.go上面的文件中啊。之前也遇到过这个问题不过没用深究,下面我们来说说go main包那点事。golang main包推荐只有一个main.go文件,这样大家就能按照习惯的方式,`go run m
一篇文章彻底弄懂go语言方法的本质
Go 语言不支持经典的面向对象语法元素,比如:类、对象、继承等。但 Go 语言也有方法(method)。和函数相比,Go 语言中的方法在声明形式上仅仅多了一个参数,Go 称之为 receiver 参数。而 receiver 参数正是方法与类型之间的纽带。Go 方法的一般声明形式如下:gofunc (receiver T/T) MethodName(参数列表)