热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

「每周译Go」这次我们来点不一样的!--《HowtoCodeinGo》系列上线(loveyoumorethanicansaymv)

本文主要介绍关于golang,ubuntu,debian的知识点,对【「每周译Go」这次我们来点不一样的!--《HowtoCodeinGo》系列上线】和【loveyoumorethan

本文主要介绍关于golang,ubuntu,debian的知识点,对【「每周译Go」这次我们来点不一样的!--《How to Code in Go》系列上线】和【love you more than i can say mv】有兴趣的朋友可以看下由【biyusr】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的go相关技术问题。

love you more than i can say mv

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”键来自动打开终端程序。

Ubuntu Terminal

终端打开之后,你可以手动安装 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.comgolang.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! 在程序运行时打印到终端上。

按 CTRL 和 X 键退出 nano。当提示保存文件时,按 Y,然后按 ENTER 退出。

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

go run hello.go

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

Output
Hello, World!

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

总结

恭喜!至此,你已经在 Ubuntu 机器上设置了 Go 编程工作区,可以开始写项目了!

相关链接:

Hugo:https://gohugo.io

issue:https://github.com/gocn/How-To-Code-in-Go/issues

pull requests: https://github.com/gocn/How-To-Code-in-Go/pulls

本文《「每周译Go」这次我们来点不一样的!--《How to Code in Go》系列上线》版权归biyusr所有,引用「每周译Go」这次我们来点不一样的!--《How to Code in Go》系列上线需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
author-avatar
淡淡很淡淡真淡
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有