如何安装本地Go Tour教程(或者叫A Tour of Go离线版),以及中文版安装不了该怎么办

news2024/11/24 11:52:57

Go 官方是有一个在线教程 A Tour of Go,可以在线学习 Go 的编程,并且有中文版。英文原版页面如下:
请添加图片描述

出人意料的是,Go 提供了离线版(各个语言都有),下载安装之后就可以在本地编译运行查看结果,不用联网使用远程服务器,这样提高了效率和性能(关于这方面的详细内容后面会单独有一节对比的)。

安装离线版前的准备

安装离线版之前,首先你需要在本地安装 Go,因为编译是在本地进行的。其次需要准备一个工作空间,用来存放下载的模块和源代码,以及编译后的二进制执行文件。

安装 Go

安装 Go 就不多说了,你使用软件包管理工具直接安装也好,官网下载(https://go.dev/dl/)使用 GUI 安装器安装也好,都很容易。

设置工作空间(worksapce)

重点是工作空间的准备。Go 一般都会有一个工作空间(现在不是必需的,早期是必需的),本质就是一个目录,这样可以很好的管理各种包、模块、源代码、编译后的二进制可执行文件。Go 通过环境变量GOPATH来找到工作空间。

工作空间的结构一般如下:
请添加图片描述

其中一般会有三个目录:

  • bin:存放构建的二进制执行文件;
  • pkg:存放的是一些模块、包;
  • src:存放 Go 源代码。

所以可以在你想要的地方创建这个目录和其中三个目录:

$ mkdir workspace
$ cd workspace
$ mkdir bin pkg src

然后在你的 Shell 配置文件(例如.bashrc.bash_profile.zshenv)中添加下面的命令,来设置环境变量GOPATH(后面的地址需要根据自己的情况修改):

export GOPATH=~/Desktop/go

然后重启终端或者使用source 配置文件来更新环境变量。

温馨提示

在安装离线版之前,需要说明一下:尽量安装英文原版,然后使用浏览器机翻。其他语言版本更新频率比较不理想,会导致出现一些问题。

比如说如果你去中文版的源码(https://github.com/Go-zh/tour)看,里面说么安装方法是:

$ go get -u github.com/Go-zh/tour

go get已经被废弃了,错误信息会提示使用go install,英文版是更新过的。中文版正确的安装方法是:

$ go install github.com/Go-zh/tour@latest

而且中文版很久没有更新了,使用的时候可能会有些问题。如果你英文不是很好,建议使用英文版加浏览器的机翻也够用。

如果你安装了中文版发现运行不了,这时候再安装英文原版却提示已安装什么的,这时候需要手动删除bin目录下的tour可执行文件,然后使用go clean -modcache清理模块缓存,这时候再安装即可。当然如果你的这些目录里本来就是空的,那么可以删干净再重新安装。

安装离线版

如果你按照之前的内容设置了GOPATH和工作空间,那么接下来就很简单。在终端中输入(不用在意当前工作目录,因为会自动安装到GOPATH的目录中):

$ go install golang.org/x/website/tour@latest

最后的@latest表示安装最新版本,如果你要安装特定版本,那么将latest更改成版本号即可。

如果你遇到了“Request Refused”之类的错误,那么在确定输入地址没有错误的情况下,稍等一会再试试看,有时候网络问题也会导致请求被拒绝。如果一直不行可以尝试更改 DNS 或者其他方法。

使用离线版

完成安装之后,进入工作空间中的bin目录,会看到一个名为tour的可执行文件:

$ cd $GOPATH/bin
$ ls
tour

运行该可执行文件即可在本地运行 A Tour of Go,会自动在默认浏览器中打开网页http://127.0.0.1:3999/basics/1,如下:

请添加图片描述

运行速度和本地用go run跑速度差不多,除了初次可能会稍慢一些。

在线版和离线版的性能区别

如果网速好的话,二者在使用的时候几乎没有太大的区别。

比如说使用快速排序排列 35 个整数并且进行输出,二者速度几乎一样(左侧为离线版,右侧为在线版):
请添加图片描述

虽然本地版和在线版二者都有 CPU 使用时间和内存大小限制,但是本地版要比在线版本宽松多了。

比如说把数组扩大到 2000 个整数的时候,离线版需要 36 秒左右跑完,在线版会在 6 秒左右的时候显示timeout running program,而本地使用go run为 35 秒左右(使用编译后的可执行程序运行为 31 秒左右)。

希望能帮到有需要的人~

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

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

相关文章

python subprocess.run() subprocess.Popen()(执行系统命令、启动新的进程、连接到子进程的输入/输出管道)

文章目录 python subprocess基本函数subprocess.runsubprocess.Popensubprocess.Popen参数解释- args:要执行的命令及其参数。可以是一个字符串或一个字符串列表。- bufsize:指定缓冲区的大小。默认值为-1,表示使用系统默认的缓冲区大小。- e…

Redis基本全局命令(含key过期策略)

Redis基本全局命令 KEYEXISTSDELEXPIRETTLRedis的key过期策略TYPE KEY 返回所有满⾜样式(pattern)的key。⽀持如下统配样式。 h?llo 匹配 hello , hallo 和 hxlloh*llo 匹配 hllo 和 heeeelloh[ae]llo 匹配 hello 和 hallo 但不匹配 hilloh[^e]llo 匹配…

opencv-图像处理基础-二值图像

opencv学习01_图像处理基础_二值图像 1.二值图像 二值图像是指仅仅包含黑色和白色两种颜色的图像。 在计算机中,通过一个栅格状排列的数据集(矩阵)来表示和处理图像。例如,图 2-1 是 一个字母 A 的图像,计算…

【优选算法题练习】day4

文章目录 一、3. 无重复字符的最长子串1.题目简介2.解题思路3.代码4.运行结果 二、1004. 最大连续1的个数 III1.题目简介2.解题思路3.代码4.运行结果 三、1658. 将 x 减到 0 的最小操作数1.题目简介2.解题思路3.代码4.运行结果 总结 一、3. 无重复字符的最长子串 1.题目简介 …

Java设计模式之结构型-代理模式(UML类图+案例分析)

目录 一、基础概念 二、UML类图 1、静态代理类图 2、动态代理类图 三、角色设计 四、案例分析 1、静态代理 2、JDK动态代理 3、Cglib动态代理 五、总结 一、基础概念 代理模式是一种结构型设计模式,它用一个代理对象来封装一个目标对象,通常…

Java的运算符

运算符介绍 运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。 运算符介绍 算术运算符赋值运算符关系运算符 [比较运算符]逻辑运算符位运算符 [需要二进制基础]三元运算符 算术运算符 介绍 算术运算符是对数值类型的变量进行运算的,在 Ja…

学习记录——Transformer、ViT、Swin-Transformer、SegFormer、TopFormer、Seaformer

Transformer 2017 Computation and Language Google Self-Attention、Multi-Head Attention 位置编码 原理参考链接 ransformer网络结构: ViT 2020 ICLR 将transformer引入到cv领域 将输入图片224x224x3按照16x16x3大小的Patch进行划分,接着通过…

JAVA+Selenium最简单的处理登录弹窗的方式

在做自动化测试遇到需要处理登录弹窗情况,例如我的用户名为admin, 密码为admin, 那么想要登录http://10.10.168.1, 只需要使用以下链接访问即可立即登录, 并免除弹窗: http://账号:密码网址

sys V 进程间通信之共享内存

note 1.使用shmget将在内核创建一个共享内存区 2.使用shmctl才可以删除内核创建的共享内存区 3.使用shmat给当前进程开辟与内核共享内存对应的内存区p&#xff0c;用户态对p的操作会作用到内核共享内存区 code #include <stdio.h> #include <stdlib.h> #inclu…

ROS:Rviz中控制机器人模型运动

目录 一、Arbotix简介二、安装 Arbotix二、Arbotix使用案例2.1需求2.2流程2.2.1创建新功能包&#xff0c;准备机器人 urdf、xacro 文件2.2.2添加 Arbotix 配置文件2.2.3编写 launch 文件配置 Arbotix2.2.4启动 launch 文件并控制机器人模型运动 一、Arbotix简介 Arbotix 是一款…

Python 标签(便签贴)打印,直接连接打印机打印

前言&#xff1a;一开始试了好多打印方式&#xff0c;图片打印很糊&#xff0c;docx文件打印效果最好&#xff0c;但是每次打印会打开Word 影响效率&#xff0c;PDF也会打开PDF软件&#xff0c;打印效果略差于docx文件&#xff0c;TXT文件又不能设置字体&#xff0c;找了好久&a…

8 Surprising Things You Can Do With ChatGPT 你可以用 ChatGPT 做的 8 件令人惊讶的事情

If you’ve heard about ChatGPT and think it’s just a fancy chatbot, you might be underestimating the range of what it can do. Here are some surprising things you can do with ChatGPT, whether you want to write a resume or have it dungeon-master an epic rol…

第二章(二):Django框架Model之ORM操作数据库:增、删、改、查

系列文章目录 备注&#xff1a;这里是Django系列文章的所有文章的目录 第一章(一) : Django框架之创建项目/应用/templates、连接MYSQL、配置日志LOGGING、启动django项目 第一章(二)&#xff1a;Django框架的模式、路由、视图&#xff1b; 第一章(三)&#xff1a;Django框架的…

Linux14.文件(下)

文件描述符fd&#xff0c;分配到的是从0开始最小的没有被占用的。 2.输出重定向(重定向的本质&#xff0c;就是在操作系统内部更改fd对应的内容的指向)&#xff0c;同时理解输入重定向和追加重定向。 3.重定向函数dup2(oldfd, newfd)&#xff0c;oldfd -> newfd (小技巧:一…

jennkins配置k8s动态slave

一、 首先完成jenkins的部署可参考jenkins部署 二、 如果是在同一个k8s集群下部署的则直接这样配置 在security中agent的端口也配置成50000 如果是虚拟机中部署的jenkins添加k8s需要做如下操作 echo ‘certificate-authority-data-value’ | base64 -d > ./ca.crt &#…

数字化转型中,企业如何做系统设计

随着人工智能、大数据、云计算、区块链等新一代信息化、数字化技术的高速发展&#xff0c;现阶段社会的方方面面都已经有了巨大的改变&#xff0c;各行各业的企业也都开始了新一轮的科技革命和产业革命&#xff0c;可以说是互联网时代之后&#xff0c;又一个能够从各方面影响世…

MySQL物理文件----日志文件(错误日志、通用查询日志、二进制日志、慢查询日志)

文章目录 MYSQL5.7/8.0支持的几种日志文件1、错误日志&#xff08;Error log&#xff09;2、一般或通用查询日志&#xff08;General query log&#xff09;3、二进制日志&#xff08;Binary log&#xff09;3、1 查看是否开启二进制日志3、2二进制日志开启3、3查看二进制文件位…

数据结构05:树与二叉树[C++][并查集]

图源&#xff1a;文心一言 Chat GPT生成&#xff0c;代码的核心思想与王道咸鱼老师的视频虽然类似&#xff0c;但是在具体实现上毕竟还是略有差别~~因此&#xff0c;如果对考研方向的并查集代码感兴趣&#xff0c;可以查看—— 王道咸鱼老师的视频&#xff1a;{5.5_2_并查集_…

会议邀请|思腾合力邀您共赴MICS 2023第十届医学图像计算青年研讨会

医学图像计算青年研讨会 (Medical Imaging Computing Seminar, MICS) 于2014年成立&#xff0c;宗旨是为医学影像分析领域的全球华人学者提供学术交流平台&#xff0c;增进本领域科研人员和医学专家的交流和合作。 第十届医学图像计算青年研讨会 (MICS 2023) 将于2023年7月14-1…

form表单禁止浏览器自动填充密码

因为用户修改密码的时候,谷歌浏览器、edge等浏览器,总是自动将保存的密码填充到重置密码输入框中,给用户使用带来困扰。原因是因为你在登录的时候选择记住了账号和密码了,所以就会把信息存在浏览器里面,当你在修改密码的时候,由于form表单的 type="password" 所…