除了Java、Python和JavaScript之外,如果要开始学习一门新语言的话,我想应该是Go!

Go语言正在被越来越多的公司使用。我们公司的后端服务已经全面采用Go语言实现了。

最开始接触Go语言是去年将一份Go代码“翻译”成Python并集成到测试平台上,说来也挺神奇,我从来没学过Go却完成了这个工作,这也侧面反应了Go的语法还是很平易近人的。

今年,调岗之后已经没有太多时间写代码了,但如果要开始学习一个新的语言或技术的话,我最想学的是Go!

目前来看,Go似乎还并没有太多测试人员使用的场景,不过,我之前介绍过的BDD行为驱动框架gauge是由Go开发的,当然,它也支持使用Go来编写BDD测试代码。

对于,已经有一定开发经验的同学,如何快速的开始学习Go语言呢?我这里给一些思路。

#### 第一步:下载和安装

下载地址:https://studygolang.com/dl

在配置环境的时候你需要重点了解GOROOT、GOPATH的作用。

你还要准备一款称手的编辑器,如果你像我一样,一直都在使用VS Code的话,那么就它就可以了。

#### 第二步:从hello world开始

先运行一个hello world程序,认识Go语言的语法。

package main

import (
"fmt"
) func main(){
fmt.Println("helloworld!")
}

#### 第三步:熟悉Go的语法

接下来,你可能要花一周左右的时间熟悉Go语言的语法。比如,变量定义、if/for、函数、Map、跨文件的程序调用…等,当然,还有一些Go特有的知识。

我是看不进去厚厚的编程书,所以一般会找简单的教程。

菜鸟教程:https://www.runoob.com/go/go-tutorial.html

当然,我更喜欢看视频教程,虽然质量参差不齐,但我仍然觉得看视频比我自己看书更有效率。

腾讯课堂:https://ke.qq.com/course/list/go

网易云课堂:https://study.163.com/courses-search?keyword=go

熟悉一段Go代码:

package main

import"fmt"

func myFunc() {
i := 0
Here: //这行的第一个词,以冒号结束作为标签
fmt.Println(i)
i++
if i <10{
goto Here //跳转到Here去
} } func main() {
//调用函数
myFunc()
}

#### 第四步:Go如何做单元测试

针对Go做测试也非常简单。比如,这是一个被测试文件:add.go。

package test_demo

func Add(a int, b int) int{
return a + b
}

下面针对Add()函数编写测试用例,test_add.go

package test_demo

import (
"testing"
) func TestAdd1(t *testing.T){
r:= Add(1, 2)
if r !=3{
t.Errorf("Add(1, 2)failed. Got %d, expected 3.", r)
} } func TestAdd2(t *testing.T){
r:= Add(2, 2)
if r !=4{
t.Errorf("Add(2, 2)failed. Got %d, expected 4.", r)
} }

你只需要执行 go test 命令就可以运行上面的测试了。

#### 第五步:从哪儿找第三方库

当然,你只学习go语言本身,基本是做不了什么事的,必须要使用第三方扩展库。

https://awesome-go.com/

这里罗列了Go语言的第三方库,通过这些第三方库的介绍,我们也可以大概知道Go可以用来干什么。

https://go-search.org/

如果你知道库的名字的话,也可以在这个网站上搜索。

据我了解,Go的第三方库大多都在GitHub上面。

#### 第六步:用Go做Web开发

Go是静态语言,而且支持并发编程,所以,他有天然的性能优势,大多公司主要使用Go也是开发后端服务(即API)。

终于到了实战阶段,如果我们真的要掌握一门语言,那么一定要用它来开发一个项目出来。这个过程大概需要一个月。

Beego:https://beego.me/

Beego是Go下在主流的Web开发框架,资料相对比较丰富,而且有完善的文档。你可为此制定一个目标,比如用它来开发一个Blog,为此,你需要详细阅读Beego文档,以及学习相关的Web开发技术。

等你完成这个项目的时候,我想你已经会使用Go语言了。

最新文章

  1. linux下安装 oracle 11g
  2. Handler.sendMessage 与 Handler.obtainMessage.sendToTarget比较
  3. myeclipse eclipse 使用git插件访问github 的解决方案
  4. onload是代码在也买你的追加元素的完成,而不是http请求的完成
  5. [LeetCode] Two Sum水过
  6. java含多个包的命令行下执行
  7. MVC中如何在controller的action中输出JS到页面上
  8. 太受不了了,,REST_FRAMEWORK太方便啦~~
  9. 142 Linked List Cycle II(如果链表有环,找到入口结点Medium)
  10. Unity3D 游戏开发构架篇 ——输入控制
  11. &lt;4&gt;Python切片功能剖析
  12. crontab的使用笔记
  13. GlashFish部署的程序时好时坏,无法访问时报404
  14. UVA1627-Team them up!(二分图判断+动态规划)
  15. 有哪些你不知道的python小工具
  16. WebView使用_WebView监听网页下载_DownloadManager使用
  17. elasticsearch 动态模板设置
  18. 完美解决百度网盘、浏览器下载限速问题proxyee-down(附带win破解版云盘)
  19. dex2jar 和 jd-gui 的安装与使用(转)
  20. getenv()函数

热门文章

  1. maven最小配置
  2. JZ2440:时钟设置
  3. HTML页面底部无用留白
  4. 走入asp.net mvc不归路:[4]说说Action有哪些常见成员
  5. onedrive实现excel在线编辑 online excel
  6. Linux下mount FreeBSD分区
  7. appium 控件定位
  8. Android图表AChartEngine
  9. 三张图教你生成一个Android jar 库。
  10. HDOJ1004 数组还要自己初始化