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

引言

Go是在谷歌的挫折中诞生的编程语言。开发人员不得不不断地选择一种执行效率高但需要长时间编译的语言,或者选择一种易于编程但在生产环境中运行效率低的语言。Go被设计为同时提供这三种功能:快速编译、易于编程和在生产中高效执行。

虽然Go是一种通用的编程语言,可以用于许多不同的编程项目,但它特别适合于网络/分布式系统程序,并赢得了“云语言”的声誉。它专注于帮助现代程序员使用一套强大的工具做更多的事情,通过将格式作为语言规范的一部分来消除关于格式的争论,以及通过编译为单一的二进制文件来简化部署。Go易于学习,只有很少的关键字,这使得它对于初学者和有经验的开发人员都是一个很好的选择。

本教程将指导您通过命令行安装和配置Go编程工作区。本教程将明确介绍Ubuntu 18.04的安装过程,但一般原则可以适用于其他Debian Linux发行版。

前期准备

您需要一台安装了Ubuntu 18.04的计算机或虚拟机,以及对该计算机的管理访问权限和互联网连接。您可以通过Ubuntu 18.04发布页面下载此操作系统。

第1步 - 设置Go

在此步骤中,通过从Go官方下载页面下载当前版本来安装Go。

要做到这一点,需要找到当前二进制发布版本的URL。你还需要注意它旁边列出的SHA256哈希值,因为你将使用这个哈希值来验证下载的文件。

你将在命令行中完成安装和设置,这是一种与计算机交互的非图形化方式。也就是说,你不需要点击按钮,而是需要输入文本,并通过文本从计算机接收反馈。

命令行,也被称为* * shell * 终端 *,可以帮助你修改和自动化你每天在计算机上执行的许多任务,是软件开发人员的重要工具。要学习许多终端命令,它们可以让你做更强大的事情。

在Ubuntu 18.04上,你可以通过点击屏幕左上角的Ubuntu图标并在搜索栏中输入terminal来找到Terminal应用程序。单击终端应用程序图标来打开它。或者,您可以同时按下键盘上的CTRLALTT键来自动打开终端应用程序。

打开终端后,您将手动安装Go二进制文件。虽然您可以使用包管理器,例如apt-get,但手动安装步骤将帮助您了解对系统的任何配置更改,这些更改是拥有有效的Go工作空间所需的。

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

cd ~

使用curl获取你从官方Go下载页面tar压缩包 URL:

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

接下来,使用sha256sum来验证压缩包:

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

运行上述命令显示的哈希值应该与下载页面上的哈希值匹配。如果没有,那么这不是一个有效的文件,你应该再次下载该文件。

Output2a3fdabf665496a0db5f41ec6af7a9b15a49fbe71a85a50ca38b1f13a103aeec  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工作区。

第2步 - 创建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工作区的默认目录是带有go子目录的用户的主目录,或$HOME/go。如果您使用的是低于1.8的Go版本,仍然认为将$HOME/go位置用于您的工作空间是最佳实践。

执行以下命令为您的Go工作空间创建目录结构:

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

-p选项告诉mkdir在目录中创建所有的parents,即使它们目前不存在。使用{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

我们应该得到这样的输出:

Outputgo 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

你应该会看到类似下面的输出:

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工作区并配置了必要的环境变量。在下一步中,您将使用一些代码测试工作区。

第3步 - 创建一个简单的程序

现在你已经设置好了Go工作空间,创建一个“Hello, World!””计划。这将确保正确配置工作空间,并为您提供更熟悉Go的机会。因为我们创建的是单个Go源文件,而不是实际的项目,所以我们不需要在工作空间中执行此操作。

在你的主目录中,打开一个命令行文本编辑器,例如nano,并创建一个新文件:

nano hello.go

在新文件中编写你的程序:

package mainimport "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程序终端产生以下输出:

OutputHello, World!

在此步骤中,您使用了一个基本程序来验证您的Go工作区是否正确配置。

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/82852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac cocoapod 3分钟安装教程( 国内镜像源方法)

参考链接:2023最新总结,Mac下使用Homebrew完全指南! - 知乎 1.打开终端, 执行: /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 2.运行,可以选择清…

Java多线程篇(3)——线程池

文章目录 线程池ThreadPoolExecutor源码分析1、如何提交任务2、如何执行任务3、如何停止过期的非核心线程4、如何使用拒绝策略 ScheduledThreadPoolExecutor源码分析 线程池 快速过一遍基础知识 7大参数 corePoolSize : 核心线程数 maximumPoolSize: 最…

Java基于SpringBoot的藏区特产销售系统的研究与实现

今天为大家带来的是基于 Java SpringBootVue 的藏区特产销售系统,大家有兴趣的可以看一下 博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目…

CSS 表格:Table

文章目录 CSS 表格表格边框折叠边框表格高度和宽度表格文字对齐表格填充表格颜色设置表格标题的位置 CSS 表格 CSS 表格属性可以用来改变表格的样式。 比如,以下代码会把表格的边框变为红色,且每个单元格之间有一条竖线: table {border-co…

提升效率,实现组织与创造的完美结合——Agenda for Mac

现代快节奏的生活中,时间管理和任务协调变得尤为关键。如果您正在寻找一个功能全面、简洁易用的日历、任务和笔记管理工具,那么Agenda for Mac定会成为您的得力助手。这款强大的应用程序将帮助您提高工作效率,实现组织与创造的完美结合。 Ag…

重构从现在开始

1 前言 重构,是一名程序员必备的职业技能。然而,大多数人对于重构的认知仍然停留在项目中期为了提升代码质量而做的并非不可不做的操作。对于重构的重要性和含义并没有充分的认知。 本文,笔者将结合自身经验和阅读《重构,改善既…

北邮22级信通院数电:Verilog-FPGA(2)modelsim北邮信通专属下载、破解教程

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 1.下载 2.解压打开 3.modelsim初安装 4.…

设计模式:策略模式、工厂模式、模板模式混合使用

目录 优缺点总结 这次我们利用模板模式固定下策略模式的骨架,工厂模式提供注册策略,获取策略的方法,提供一个三个设计模式的例子。 abstract class Template{// 模板方法,定义了算法的骨架public void templateMethod() {System.o…

Java代码质量评估工具

概述 Java代码的质量评估主要包括代码的可维护性、健壮性、以及在运行时能达到既定的性能目标,可维护性主要包括代码的可读性、在关键的代码上提供详细注释、在设计类、方法以及代码逻辑时符合设定的编码规范,健壮性主要包括编写代码时应使用常用的设计…

k8s(Kubernetes)集群部署--使用 kubeadm方式部署

k8s集群部署--使用 kubeadm方式部署 一、测试所需环境(三台均要执行)二、配置准备(三台均要执行)1. 重命名hostname、添加hosts2. 关闭防火墙、selinux与swap3. 添加网桥过滤及内核转发配置文件4.同步时间5.安装ipset及ipvsadm 三…

Mysql002:(库和表)操作SQL语句

目录: 》SQL通用规则说明 SQL分类: 》DDL(数据定义:用于操作数据库、表、字段) 》DML(数据编辑:用于对表中的数据进行增删改) 》DQL(数据查询:用于对表中的数…

【Verilog教程】2.3 Verilog 数据类型

Verilog 最常用的 2 种数据类型就是线网(wire)与寄存器(reg),其余类型可以理解为这两种数据类型的扩展或辅助。 线网(wire) wire 类型表示硬件单元之间的物理连线,由其连接的器件输…

Docker 部署 Redis 服务

拉取最新版本的 Redis 镜像: $ sudo docker pull redis:latest在本地预先创建好 data 目录和 conf/redis.conf 文件。 使用以下命令来运行 Redis 容器: $ sudo docker run -itd --name redis --privilegedtrue -p 6379:6379 -v /home/ubuntu/docker/redis/data:/data -v /ho…

代理IP与Socks5代理:跨界电商智能爬虫的引擎与安全壁垒

一、引言 跨界电商已成为全球商业发展的重要趋势,但要成功进入多样化的市场,企业需要大量的市场数据和对隐私安全的保障。代理IP和Socks5代理是两项关键技术,它们在这一领域的应用对于企业的成功至关重要。 二、代理IP:跨界电商…

十分钟理解OSPF路由协议

十分钟理解OSPF路由协议 1.RIP的缺陷以跳数为度量值最大跳数为15更新路由表采用全更新收敛速度慢 2.RIP与OSPF比较OSPF概述运行OSPF协议之前运行OSPF协议之后 3.OSPF协议工作过程1.发现邻居2.建立邻接关系3.传递链路状态信息4.计算路由 4.OSPF分区域管理 有RIP协议,…

单元测试框架-pytest

单元测试框架-pytest 官网 常用插件 pytest-html: 生成html报告pytest-xdist: 实现并发测试pytest-ordering: 实现测试用例顺序设置pytest-rerunfailures: 测试用例失败重试allure-pytest: 生成测试报告 引入依赖 在项目根目录下创建:requirements.txt pytest pytest-htm…

Visual Studio Code配置开发Maven项目、Spring Boot项目

配置开发Maven项目、Spring Boot项目 配置全局配置项目配置注意 Maven项目开发安装插件创建项目启动项目 Spring Boot项目开发安装插件创建项目启动项目 其他插件 配置 全局配置 ctrlshiftp打开搜索setting.json,这个setting.json配置属于全局配置 配置全局的Java与…

Python配置与测试利器:Hydra + pytest的完美结合

简介:Hydra 和 pytest 可以一起使用,基于 Hydra Pytest 的应用可以轻松地管理复杂配置,并编写参数化的单元测试,使得Python开发和测试将变得更为高效。 安装: pip install hydra-core pytest案例源码:my…

毕业设计|基于stm32单片机的app视频遥控抽水灭火小车设计

基于stm32单片机的app视频遥控抽水灭火水泵小车设计 1、项目简介1.1 系统构成1.2 系统功能 2、部分电路设计2.1 L298N电机驱动电路设计2.2 继电器控制电路设计 3、部分代码展示3.1 小车控制代码3.1 水泵控制代码 4 演示视频及代码资料获取 1、项目简介 视频简介中包含资料http…

用selenium和xpath定位元素并获取属性值以及str字符型转json型

页面html如图所示: 要使用xpath定位这个div元素,并且获取其属性data-config的内容值。 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Optionshost127.0.0.1 port10808 …