关于程序员:每周译Go-How-to-Code-in-Go系列文章上线了

58次阅读

共计 5497 个字符,预计需要花费 14 分钟才能阅读完成。

Gopher 们大家好,从本周开始咱们将每周定期公布《How-To-Code-in-Go》系列翻译文章,共蕴含 40 篇内容的学习。


《How-To-Code-in-Go》系列文章是现阶段最新的 Go 语言学习书,心愿每位 gopher 们可能坚持不懈,每篇都认真学习,好好排汇其中的要点、精髓,咱们一起加油,共同进步!谁都不能够落伍~

前情提要~

《How-To-Code-in-Go》采纳 Hugo 公布。欢送大家通过 issue 提供倡议,也能够通过 pull requests 来独特参加奉献。

装置完 hugo 之后,须要先同步主题文件:

git submodule update --init --recursive

同步实现后,可在根目录执行以下指令来测试网站:

hugo server

文档在 content/zh/docs 目录下,批改后能够通过 pull requests 提交。


明天咱们来一起学习 第一篇 文章:

如何在 Ubuntu 18.04 上装置 Go 和设置本地编程环境

Go 语言简介

Go 是一门在 Google 备受挫折后而诞生的语言。开发者不得不频繁地在两种语言中抉择,要么抉择一门执行效率高然而编译工夫长的语言,要么抉择一种易于编程但在生产中运行效率低下的语言。Go 被设计为 同时提供所有这三个性能:疾速编译、易于编程和生产中的高效执行

尽管 Go 是一门通用的编程语言,可用于许多不同类型的编程我的项目,但它 特地适宜网络 / 分布式系统我的项目,博得了“云语言”的美誉。Go 语言专一于通过一组弱小的工具来帮忙古代程序员实现更多的工作,通过使格局成为语言标准的一部分来打消对格局的争执,以及通过编译为单个二进制文件来简化部署。Go 易于学习,关键字非常少,这使其成为不论是初学者还是经验丰富的开发人员的不二之选。

本教程将领导你通过命令行来装置 Go 和配置 Go 编程环境。本教程特地针对 Ubuntu 18.04 的装置过程,然而对于其余 Debian Linux 发行版也同样实用。

装置前提

你须要一台装置了 Ubuntu 18.04 的电脑或者虚拟机,并且有对该计算机的管理员拜访权限和网络连接。您能够通过 Ubuntu 18.04 版本页面 下载此操作系统。

第一步:装置 Go

在这一步,你通过 Go 官网下载页面下载最新版本来装置 Go。

为此,你须要找到最新二进制版本压缩包的 URL。你还要留神旁边列出的 SHA256 哈希值,因为你将用它来验证下载的文件。

你将通过命令行来实现装置和设置,这是一种与计算机交互的非图形化形式。也就是说,你输出的是文本,而后也是通过文本失去计算机的反馈,而不是点击按钮。

命令行,也就是咱们熟知的 shell 或者 终端,能够帮忙你批改或自动化很多你每天执行在计算机上的工作,这是软件开发人员必备的工具。只管有很多终端命令须要学习,然而这些命令能够让你做更弱小的事件。无关命令行的更多信息,请查看 Linux 终端简介 教程。

在 Ubuntu 18.04 上,你能够通过点击屏幕左上角的 Ubuntu 图标并在搜寻栏中输出 terminal 来找到终端程序。点击终端程序图标来关上终端。或者你能够在键盘上同时按住的“CTRL”、“ALT”和“T”键来主动关上终端程序。

终端关上之后,你能够手动装置 Go 二进制。尽管能够通过包管理工具,比方 apt-get,然而通过手动装置能够帮忙你了解一个无效的 Go 工作区零碎外面任何必要的配置信息的批改。

下载 Go 之前,确保你在 home (~) 目录:

cd ~

依据从官网 Go 下载页面复制的压缩包 URL,应用 curl 命令拉取下载:

curl -LO https://dl.google.com/go/go1.12.1.linux-amd64.tar.gz

接下来,应用 sha256sum 命令来校验压缩包:

sha256sum go1.12.1.linux-amd64.tar.gz

运行下面命令显示的哈希值应该和下载页面的哈希值统一,如果不统一的话,那么这个压缩包就不是一个无效文件,须要从新下载。

Output
2a3fdabf665496a0db5f41ec6af7a9b15a49fbe71a85a50ca38b1f13a103aeec go1.12.1.linux-amd64.tar.gz

接下来,解压下载的文件并将其装置到零碎所需地位。个别都是放在 /usr/local 目录上面:

sudo tar -xvf go1.12.1.linux-amd64.tar.gz -C /usr/local

那么在 /usr/local 目录上面有一个 go 目录。

留神:只管 /usr/local/go 是官网举荐的地位,但有些用户可能更喜爱或须要不同的门路。

在这一步中,你在 Ubuntu 18.04 机器上下载并装置了 Go。接下来你将配置 Go 的工作区。

第二步:创立你的 Go 工作区

装置完 Go 之后,你能够创立你的编码工作区。Go 语言的工作区在其根目录下蕴含两个目录:

  • src: 该目录蕴含 Go 的源文件。所谓源文件就是你用 Go 编程语言写的文件。源文件被 Go 编译器构建成可执行的二进制文件。
  • bin: 该目录蕴含了 Go 工具构建和装置的可执行文件。可执行文件就是运行在你零碎上并执行工作的二进制文件。通常是你的源码或者是其余下载的 Go 源代码编译的程序。

src 子目录可能蕴含多个版本控制仓库(例如 Git, Mercurial 和 Bazaar)。这容许你在你的我的项目中标准导入代码。标准导入就是援用齐全限定包的导入,例如 github.com/digitalocean/godo

当你引入第三方库的时候,你能够看到相似 github.com, golang.org 或其余目录,如果你应用的是 github.com 之类的代码仓库,你还将把我的项目和源文件放在该目录下。咱们将在此步骤的前面局部探讨这个概念。

上面是典型的工作区目录构造:

.
├── bin
│ ├── buffalo # command executable
│ ├── dlv # command executable
│ └── packr # command executable
└── src
└── github.com
└── digitalocean
└── godo
├── .git # Git repository metadata
├── account.go # package source
├── account_test.go # test source
├── ...
├── timestamp.go
├── timestamp_test.go
└── util
├── droplet.go
└── droplet_test.go

从 1.8 开始,Go 工作区的默认目录是用户的 home 目录,并带有 go 子目录,或者是 $HOME/go 目录。如果你应用的是早于 1.8 的 Go 版本,目前认为最佳做法是为你的工作区应用 $HOME/go 地位。

应用上面命令为你的 Go 工作区创立目录构造:

mkdir -p $HOME/go/{bin,src}

-p 选项是通知 mkdir 在目录中创立所有的下级目录,只管他们可能不存在。应用 {bin,src}mkdir 创立一组参数,并通知它创立 bin 目录和 src 目录。

以上命令将确保上面的目录构造各就各位:

└── $HOME
└── go
├── bin
└── src

在 Go 1.8 之前,须要设置一个名为 $GOPATH 的本地环境变量。$GOPATH 通知编译器在哪里能够找到导入的第三方源代码,同样包含任何你写的本地源代码。尽管不再明确要求它,但它依然被认为是一种很好的做法,因为许多第三方工具依然依赖于设置的这个变量。

你能够通过将全局变量增加到你的 ~/.profile 中来设置你的 $GOPATH。你可能想依据你的 shell 配置将其增加到 .zshrc.bashrc 文件中。

首先,应用 nano 或你喜爱的文本编辑器关上 ~/.profile

nano ~/.profile

通过上面的命令设置你的 $GOPATH

~/.profile
export GOPATH=$HOME/go

当 Go 编译和装置工具时,会将他们放在 $GOPATH/bin 目录。为不便起见,通常将工作区的 /bin 子目录增加到 ~/.profile 中的 PATH 中:

~/.profile
export PATH=$PATH:$GOPATH/bin

这将容许你在零碎上的任何地位运行通过 Go 工具编译或下载的任何程序。

最初,你须要将 go 二进制文件增加到 PATH 中。你能够通过在行尾增加 /usr/local/go/bin 来实现:

~/.profile
export PATH=$PATH:$GOPATH/bin:/usr/local/go/bin

/usr/local/go/bin 增加到 $PATH 中,能够使所有 Go 工具都能够在零碎上的任何地位应用。

为了更新你的 shell 配置,请应用上面的命令来加载全局变量:

. ~/.profile

您能够通过应用 echo 命令并查看其输入,来验证你的 $PATH 是否已更新:

echo $PATH

你将看到你的 $GOPATH/bin 显示在你的主目录中。如果你以 root 身份登录,你将在门路中看到 /root/go/bin

Output
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/go/bin:/usr/local/go/bin

你还会看到 /usr/local/go/bin 的 Go 工具的门路:

Output
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/go/bin:/usr/local/go/bin

通过查看 Go 的以后版本来验证装置:

go version

咱们应该失去相似上面的输入:

Output
go version go1.12.1 linux/amd64

当初你曾经创立了工作区的根目录并设置了 $GOPATH 环境变量,你能够依据以下目录构造创立你将来的我的项目。此示例假如你应用 github.com 作为仓库:

$GOPATH/src/github.com/username/project

例如,如果你正在开发 https://github.com/digitalocean/godo 我的项目,它将存储在以下目录中:

$GOPATH/src/github.com/digitalocean/godo

该我的项目构造使我的项目能够通过 go get 工具应用。它也有助于当前的可读性。你能够通过应用 go get 命令并获取 godo 库来验证这一点:

go get github.com/digitalocean/godo

这将下载 godo 库的内容并在你的计算机上创立 $GOPATH/src/github.com/digitalocean/godo 目录。
你能够通过列出目录来查看下看看是否胜利下载了 godo包:

ll $GOPATH/src/github.com/digitalocean/godo

你应该看到相似上面这样的输入:

>>>>>>> main
Outputdrwxr-xr-x 4 root root 4096 Apr 5 00:43 ./
drwxr-xr-x 3 root root 4096 Apr 5 00:43 ../
drwxr-xr-x 8 root root 4096 Apr 5 00:43 .git/
-rwxr-xr-x 1 root root 8 Apr 5 00:43 .gitignore*
-rw-r--r-- 1 root root 61 Apr 5 00:43 .travis.yml
-rw-r--r-- 1 root root 2808 Apr 5 00:43 CHANGELOG.md
-rw-r--r-- 1 root root 1851 Apr 5 00:43 CONTRIBUTING.md
.
.
.
-rw-r--r-- 1 root root 4893 Apr 5 00:43 vpcs.go
-rw-r--r-- 1 root root 4091 Apr 5 00:43 vpcs_test.go

在这一步中,你创立了一个 Go 工作区并且配置了必要的环境变量。下一步你将应用一些代码来测试下工作区。

第三步:创立一个简略的程序

当初你曾经设置了工作区,来创立一个“Hello, World!”程序吧。这能够测验工作区配置是否正确,并且给你一个更加相熟 Go 的机会。因为咱们创立的是单个 Go 源文件,而不是理论我的项目,所以咱们不须要在工作区中执行此操作。

在你的 home 目录,关上一个命令行文本编辑器,例如 nano,而后创立一个新文件:

nano hello.go

在新文件里写下你的程序:

package main
import "fmt"
func main() {fmt.Println("Hello, World!")
}

该代码应用了 fmt 包并且应用 Hello, World! 作为参数调用了 Println 函数。这将导致短语 Hello, World! 在程序运行时打印到终端上。

CTRLX 键退出 nano。当提醒保留文件时,按 Y,而后按 ENTER 退出。

退出 nano 返回 shell 之后,运行程序:

go run hello.go

hello.go 程序会使终端产生以下输入:

Output
Hello, World!

在此步骤中,你应用了一个简略小程序来验证是否正确配置了 Go 工作区。

总结

祝贺!至此,你曾经在 Ubuntu 机器上设置了 Go 编程工作区,能够开始写我的项目了!


明天的学习就到这里啦,大家若有任何问题或想法欢送评论区留言或私发进行发问与交换。要晓得,你不是一个人在战斗!小 G 始终在~

本文由 mdnice 多平台公布

正文完
 0