当前位置: 首页 > 编程日记 > 正文

简单图文配置golang+vscode【win10/centos7+golang helloworld+解决install failed等情况】

博客目录(阅读时间:10分钟)

  • 一.win10
    • 0.系统环境
    • 1. win10配置golang环境
      • ①下载相关软件
      • ②创建gowork工作空间
      • ③配置环境变量(GOPATH+PATH)
      • ④验证环境配置结果
    • 2. win10配置vscode go环境
      • ①安装vscode的go插件
      • ②尝试运行
      • ③vscode运行报错情况(install failed)
      • ④vscode go配置
      • ⑤再次运行golang+vscode helloworld
    • 3. 安装与运行 go tour
    • 4. golang的第一个包与测试
    • 5. 其他可能遇到的问题
  • 二.centos7
    • 0.系统环境
    • 1.virtual box安装centos7
    • 2.centos7配置golang环境
      • ①下载相关软件+创建gowork工作空间+配置环境变量(GOPATH+PATH)+验证环境配置结果
      • ②创建helloworld
    • 3.centos7配置vscode go环境
    • 4.安装与运行 go tour
    • 5.golang的第一个包
    • 6.golang的第一个测试
  • 三.总结
  • 四.References


一.win10

0.系统环境

操作系统:win10 家庭版 1909
硬件信息(做基本的golang开发,硬件要求不高): 在这里插入图片描述

1. win10配置golang环境

①下载相关软件

GO 1.15 https://golang.org/dl/
VSCODE https://code.visualstudio.com/
【注:本文主要着力于配置golang,省略安装vscode的步骤】


②创建gowork工作空间

按照https://go-zh.org/doc/code.html所说
在PC的任意目录下创建gowork文件夹,并创建src、bin和pkg三个子文件夹。此处我将其放在固态硬盘所在的目录。

Go代码必须放在工作空间内。它其实就是一个目录,其中包含三个子目录:

src 目录包含Go的源文件,它们被组织成包(每个目录都对应一个包),
pkg 目录包含包对象,
bin 目录包含可执行命令。


③配置环境变量(GOPATH+PATH)

a.GOPATH
新建环境变量GOPATH,值为gowork目录,如C:\gowork
在这里插入图片描述
b.PATH
在PATH下添加gowork目录的bin文件夹,如C:\gowork\bin

④验证环境配置结果

在这里插入图片描述


2. win10配置vscode go环境

①安装vscode的go插件

vscode添加go插件
在这里插入图片描述

②尝试运行

这时就可以在gowork/src目录下写一个hello.go:

package mainimport "fmt"func main() {fmt.Printf("Hello word")
}

此时在命令行输入go run hello.go可以直接运行,但在vscode下还不能运行。

③vscode运行报错情况(install failed)

用vscode打开gowork/src目录,右下角提示需要安装依赖包
在这里插入图片描述

install all后出现以下情况:

Installing github.com/mdempsky/gocode FAILED
Installing github.com/uudashr/gopkgs/v2/cmd/gopkgs FAILED
Installing github.com/ramya-rao-a/go-outline FAILED
Installing github.com/acroca/go-symbols FAILED
Installing golang.org/x/tools/cmd/guru FAILED
Installing golang.org/x/tools/cmd/gorename FAILED
Installing github.com/cweill/gotests/... FAILED
Installing github.com/fatih/gomodifytags FAILED
Installing github.com/josharian/impl FAILED
Installing github.com/davidrjenni/reftools/cmd/fillstruct FAILED
Installing github.com/haya14busa/goplay/cmd/goplay FAILED
Installing github.com/godoctor/godoctor FAILED
Installing github.com/go-delve/delve/cmd/dlv FAILED
Installing github.com/stamblerre/gocode FAILED
Installing github.com/rogpeppe/godef FAILED
Installing github.com/sqs/goreturns FAILED
Installing golang.org/x/lint/golint FAILED


④vscode go配置

根据https://goproxy.io/zh/的介绍:

如果您使用的 Go 版本是 1.13 及以上 (推荐)
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct# 设置不走 proxy 的私有仓库,多个用逗号相隔(可选)
go env -w GOPRIVATE=*.corp.example.com# 设置不走 proxy 的私有组织(可选)
go env -w GOPRIVATE=example.com/org_name

命令行输入:
在这里插入图片描述
重新打开Vscode -> install all,配置成功。


⑤再次运行golang+vscode helloworld

用vscode打开gowork/src文件夹:
在这里插入图片描述
vscode调试的快捷键为F5,按下F5运行代码如下:
在这里插入图片描述
至此,golang的helloworld已顺利完成啦~~


3. 安装与运行 go tour

在【二.centos7】中展示。


4. golang的第一个包与测试

在【二.centos7】中展示。

5. 其他可能遇到的问题

vscode使用F5进行调试时,遇到 go:cannot find main module 的问题

在launch.json下进行如下配置,再运行调试即可:
在这里插入图片描述

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "Launch","type": "go","request": "launch","mode": "auto","remotePath":"","host": "127.0.0.1","program": "${fileDirname}","env": {"GO111MODULE": "off"},"args": [],"showLog": false,}]
}


二.centos7

0.系统环境

操作系统:CentOS7
硬件信息:使用virtual box配置虚拟机(内存3G、磁盘30G)

1.virtual box安装centos7

此步骤比较简单,借鉴博客即可轻松完成,由于不是主要内容,只贴出centos7下载地址和借鉴博客。

centos7下载地址:https://www.centos.org/download/
借鉴博客:https://www.cnblogs.com/gaomanito/p/11460381.html


2.centos7配置golang环境

①下载相关软件+创建gowork工作空间+配置环境变量(GOPATH+PATH)+验证环境配置结果

此处使用老师博客上推荐的yum安装的方法,至于博客上提到的版本不是最新的问题,其实使用适当的源就可以解决。
依次输入以下指令即可:

rpm --import https://mirror.go-repo.io/centos/RPM-GPG-KEY-GO-REPO
curl -s https://mirror.go-repo.io/centos/go-repo.repo | tee /etc/yum.repos.d/go-repo.repo
yum install golang

在安装完golang后,与win10相似,需要自己创建gowork文件夹,并且配置GOPATH和PATH的环境变量。
依次输入以下指令即可:

mkdir -p ~/go/{bin,pkg,src}
echo 'export GOPATH="$HOME/go"' >> ~/.bashrc
echo 'export PATH="$PATH:${GOPATH//://bin:}/bin"' >> ~/.bashrc

安装并配置完毕后,输入go version检验是否配置成功:
在这里插入图片描述
输入go env检查环境变量:
在这里插入图片描述

②创建helloworld

创建$GOPATH/src/github.com/user/hello文件夹如下:

mkdir $GOPATH/src/github.com/user/hello -p

用vscode创建hello.go文件并使用以下代码:

package mainimport "fmt"func main() {fmt.Printf("hello, world\n")
}

使用go run hello.go运行如下:
在这里插入图片描述


3.centos7配置vscode go环境

使用rpm下载并安装vscode,官方教程如下:https://code.visualstudio.com/docs/setup/linux#_rhel-fedora-and-centos-based-distributions

依次输入以下指令即可:

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
yum check-update
sudo yum install code

vscode配置go环境的方法与win10一致,请借鉴【一.win10】中的操作即可。

4.安装与运行 go tour

根据https://github.com/Go-zh/tour配置gotour,并运行离线版的gotour,指令如下:

go get -u github.com/Go-zh/tour
./tour  //在$GOPATH/bin文件夹下生成tour

在这里插入图片描述

在这里插入图片描述

当然,也可以在线使用gotour:https://tour.go-zh.org/welcome/1
个人而言更倾向于前者,因为经测试本地运行速度更快。

5.golang的第一个包

首先,在进行测试前,务必要将之前为了配置vscode而设置的https://goproxy.io相关环境变量去掉,不然在go build时会报错(比如会让你输入github的账户密码,而无法搜索到本地的github.com文件夹)。

go env -w GO111MODULE=off
go env -w GOPROXY=" "

①创建第一个库
创建文件夹:

mkdir $GOPATH/src/github.com/user/stringutil

接着,用vscode在该目录中创建名为 reverse.go 的文件,内容如下:

// stringutil 包含有用于处理字符串的工具函数。
package stringutil// Reverse 将其实参字符串以符文为单位左右反转。
func Reverse(s string) string {r := []rune(s)for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {r[i], r[j] = r[j], r[i]}return string(r)
}

在该目录下编译该项目:

go mod init stringutil  //如果报错cannot find main module,加上这行即可
go build

在这里插入图片描述
②修改
修改原来的 hello.go 文件(它位于 $GOPATH/src/github.com/user/hello)去使用它:

package mainimport ("fmt""github.com/user/stringutil"
)func main() {fmt.Printf(stringutil.Reverse("!oG ,olleH"))
}

③运行
再次安装 hello 程序时,stringutil 包也会被自动安装。运行此程序的新版本,能看到一条新的,反向的信息:

在这里插入图片描述

6.golang的第一个测试

根据教程(https://go-zh.org/doc/code.html)介绍,Go拥有一个轻量级的测试框架,它由 go test 命令和 testing 包构成。

我们可以通过创建一个名字以 _test.go 结尾的,包含名为 TestXXX 且签名为 func (t *testing.T) 函数的文件来编写测试。

测试框架会运行每一个这样的函数;若该函数调用了像 t.Error 或 t.Fail 这样表示失败的函数,此测试即表示失败。

我们可通过创建文件 $GOPATH/src/github.com/user/stringutil/reverse_test.go 来为 stringutil 添加测试,其内容如下:

package stringutilimport "testing"func TestReverse(t *testing.T) {cases := []struct {in, want string}{{"Hello, world", "dlrow ,olleH"},{"Hello, 世界", "界世 ,olleH"},{"", ""},}for _, c := range cases {got := Reverse(c.in)if got != c.want {t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)}}
}

然后使用以下指令进行测试:

go test github.com/user/stringutil

在这里插入图片描述
由上可知已顺利完成测试。


三.总结

本次实验内容并不复杂,主要就是配置环境+简单的golang helloworld水平的编程任务。
然而耗时还是较长,主要是因为第一次使用时遇到的坑比较多,比如虚拟机安装centos的坑、安装golang配置环境变量的坑、安装vscode因为GFW的原因得更换源的坑等等。
总的来说,本次实验的收获集中在环境的搭配上,希望在之后的实验中,能在golang语言的应用上收获更多。

四.References

老师博客:https://pmlpml.gitee.io/service-computing/post/ex-install-go/
官方DOC:https://go-zh.org/doc/code.html
菜鸟编程golang:https://www.runoob.com/go/go-tutorial.html
安装配置go:https://cloud.tencent.com/developer/article/1478660
安装配置vscode:https://code.visualstudio.com/docs/setup/linux#_rhel-fedora-and-centos-based-distributions

相关文章:

安卓 画板 学习笔记

2019独角兽企业重金招聘Python工程师标准>>> 代码片段 package com.tang.paint;import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream;import android.app.Activity; import android.app.ActionBar; import android.app.Fr…

2018-3-7 Hadoop简介1(名字的由来,以及基本的结构)

问题一&#xff1a;什么是云计算&#xff1f; 实际上是提供的一种服务&#xff0c;这个服务的特点是&#xff1f; 主要是按需分配 云计算_百度百科 https://baike.baidu.com/item/%E4%BA%91%E8%AE%A1%E7%AE%97/9969353?fraladdin 什么是大数据&#xff1f…

MAYA 2022基础入门学习教程

流派:电子学习| MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;48.0 KHz 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09;|大小解压后:3.41 GB |时长:4.5小时 包含第一部分和第二部分课程 课程获取&#xff1a;MAYA 2022基础入门学…

[Ubuntu 22.04] Docker安装及使用

容器的生命周期由用户控制,用户可以选择手动删除容器或让其保留在系统中以供之后使用。选项允许你在容器内部创建一个交互式的终端会话,使你可以像在本地终端一样与容器进行交互。你可以在容器内执行命令,查看输出并输入命令。镜像拉取完成后,可以使用以下命令创建并启动一个基于 Ubuntu 20.04 镜像的容器。列出所有正在运行的容器,并显示它们的容器ID、镜像、命令、创建时间、状态等信息。以下命令可以中止容器,改命令将向容器发送一个停止信号,使其正常停止并退出。这将显示所有容器的列表,包括正在运行的和已停止的容器。

Docker ps命令

docker ps命令可以用来列出Docker容器相关信息。docker ps 命令可以用来列出容器相关信息。

Chain of Responsibility 责任链模式 MD

责任链模式 简介 责任链模式是一种对象的行为模式。在责任链模式里&#xff0c;很多对象由每一个对象对其下家的引用而连接起来形成一条链&#xff0c;请求在这个链上【传递】&#xff0c;直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最…

python tkinter选择路径控件_Python3 Tkinter选择路径功能的实现方法

效果基于Python3。 在自己写小工具的时候因为这个功能纠结了一会儿&#xff0c;这里写个小例子&#xff0c;供有需要的参考。 小例子&#xff0c;就是点击按钮打开路径选择窗口&#xff0c;选择后把值传给Entry输出。 效果预览 这是选择前&#xff1a;选择&#xff1a;选择后&a…

Golang TDD实践报告:快速排序Quick Sort

Golang TDD实践报告&#xff1a;快速排序Quick Sort 【阅读时间&#xff1a;约5分钟】0.项目需求1.编写符合项目输入输出的一个测试2.尝试运行测试3.先使用最少的代码来让失败的测试先跑起来4.编写足够的代码以使测试通过5.重构编写完整的代码以提高效率6.基准测试TDD是测试驱动…

quick-cocos2d-x游戏开发【3】——display.newSprite创建向导

游戏嘛。没有图片没有图片可以称为你的游戏&#xff0c;所以&#xff0c;我们看一下使用quick如何创建精灵的方式。quick的api精灵族的创造仍然是非常具体的解释。因此&#xff0c;建立非常easy。display.newSprite(filename, x, y, params) filename&#xff1a;精灵文件名称 …

JSON http://www.cnblogs.com/haippy/archive/2012/05/20/2509329.html

js: JSON.stringify(idinfo)//将对象转化为 JSON串 //查询后为将json串赋值给表单 function _form1_load() { AOS.ajax({ url: getForm1Info.jhtml, ok: function (data) {//{cardno_5300129, sex_2, age_如花, name_凤} …

mysql update 并发 慢_MySQL跑在CentOS 6 和 7上的性能比较

点击蓝色“程序猿DD”关注我哟加个“星标”&#xff0c;不忘签到哦来源&#xff1a;yangyidba关注我&#xff0c;回复口令获取可获取独家整理的学习资料&#xff1a;- 001 &#xff1a;领取《Spring Boot基础教程》- 002 &#xff1a;领取《Spring Cloud基础教程》一 前言计划今…

远程控制virtual box虚拟机系统的三种方式

远程控制virtual box虚拟机系统的三种方式【阅读时间&#xff1a;5分钟】1.使用现有的远程控制软件2.使用SSH连接3.使用远程桌面控制虚拟机系统对于把虚拟机安装在寝室笔记本的人来说&#xff0c;能够远程控制虚拟机的系统是很重要的一件事&#xff0c;而远程控制虚拟机的方式一…

Kernel那些事儿之内存管理(7) --- Slab(上)

前面讲的buddy system算法&#xff0c;分配内存的最小单位是一个页面&#xff08;例如 4K&#xff09;。这对于大的内存申请比较适用。可是实际生活中&#xff0c;Kernel经常需要分配小的内存空间&#xff0c;比如几十个字节&#xff0c;这个时候怎么办呢&#xff1f;不同的人可…

Vyond制作2D动画学习教程

Vyond为2D动画提供了极其简单的分解视频创建过程。 你会学到什么 课程获取&#xff1a;Vyond制作2D动画学习教程-云桥网 您将学习如何为2d动画制作画外音 您将学习如何使用Vyond轻松创建精彩的动画视频 流派:电子学习| MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xf…

Blender3.0电影级别CG场景制作视频教程

Blender 3.0的电影场景制作–8小时以上的主教程 三本教程合三为一 你会学到什么 你将学习如何在Blender中建模 你将学习如何在Blender中创建更复杂的纹理 你将学习如何创建一个场景&#xff0c;设置摄像机和灯光 你将在Blender中学习动画的基础知识 你将会学到如何在Blender中…

Android WebView使用与JavaScript使用

WebView基本使用 WebView是View的一个子类&#xff0c;可以让你在activity中显示网页。 可以在布局文件中写入WebView&#xff1a;比如下面这个写了一个填满整个屏幕的WebView&#xff1a; <?xml version"1.0" encoding"utf-8"?> <WebView x…

YOLOv8-Detect训练CoCo数据集+自己的数据集

至此,整个训练预测阶段完成。此过程同样可以在linux系统上进行,在数据准备过程中需要仔细,保证最后得到的数据准确,最好是用显卡进行训练。有问题评论区见!

lvs服务器需要开启web服务么_Nginx+Keepalived实现web服务器高可用

1、Nginx业务背景现公司需求快速搭建web服务器&#xff0c;对外提供给用户web服务。需求拆分需要基于http协议的软件&#xff0c;搭建服务实现介绍常见用法&#xff1a;1) web服务器软件 httpd http协议同类的web服务器软件&#xff1a;apache(老牌) nginx(俄罗斯) IIS(微软)2)…

centos使用镜像源轻松配置golang+vscode的方法

Title&#xff1a;centos使用镜像源轻松配置golangvscode的方法 &#xff08;阅读时间&#xff1a;约5分钟&#xff09; 零.序言 最近笔者在上一门名为服务计算的课程&#xff0c;在老师的作业博客中提到&#xff0c;安装golangvscode环境总会遇到各种网络问题&#xff0c;在…

MySQL_update同一张表

update tb1 inner join(select type, count(*) as cntfrom tb1 group by type)as der using(type)set tb1.cnt der.cnt转载于:https://www.cnblogs.com/MarchThree/p/4641515.html

在SolidWorks 3D CAD中构建乐高直升机

以有趣而独特的方式练习您的3D CAD技能 你会学到什么 练习SolidWorks三维CAD的使用 学习如何使用机械伴侣 创建直升机的零件 将零件组装成工作模型 类型:电子教学| MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;48.0 KHz 语言&#xff1a;英语中英文字幕&#xf…

CSS局限属性contain:优化渲染性能的利器

在网页开发中,优化渲染性能是一个重要的目标。CSS局限属性contain是一个强大的工具,可以帮助我们提高网页的渲染性能。本文将介绍contain属性的基本概念、用法和优势,以及如何使用它来优化网页的渲染过程。

利用java多线程向MongoDB中批量插入静态文件

第一步、开发环境&#xff1a; win7 64位(注&#xff1a;MongoDb在32位windows上有数量限制(2G)&#xff0c;详见官方文档) Mongodb3.2 mongofb_java_driver 3.2.2 第二部、安装mongodb,并开启服务 略&#xff1a;可参见官方文档 第三部、代码 import java.io.BufferedReader; …

为啥我从后台查到的值在页面显示的是undefined_再谈一个管理后台列表功能应有的素质...

​大家能看到的这个号第1篇文章《无心朝政&#xff0c;列表功能分析下》就是讲列表功能。虽然当时写的时候特别认真&#xff0c;但基本是围绕“列表功能”这个广泛的词来阐述的。最近在做一个体育赛事赛程的后台管理系统 Match-Schedule&#xff0c;对管理后台列表有更多的体会…

Go语言的错误异常处理机制及其应用

一、背景 在日常编写golang程序或阅读别人的golang代码时&#xff0c;我们总会看到如下的一堆代码块&#xff1a; xx, err func(xx) if err ! nil {//do sth. to tackle this problem }这种经典的显式错误处理方式&#xff0c;在golang开发中几乎无处不在&#xff0c;了解过…

【Win10 应用开发】语音命令与App Service集成

昨天&#xff0c;老周演示了语音命令集成这一高大上功能&#xff0c;今天咱们来点更高级的语音命令。 在昨天的例子中&#xff0c;响应语音命令是需要启动应用程序的&#xff0c;那么如果可以不启动应用程序&#xff0c;就直接在小娜面板上进行交互&#xff0c;是不是会更高大小…

Maya 2022中的硬表面建模技术学习视频教程

Maya 2022中的硬表面建模 信息: 使用正确的拓扑和边流在Maya中建模硬曲面对象。 你会学到什么 硬质表面工具和技术 细分工作流程 边缘流动控制 正确拓扑 材料设置 Studio Lightning 渲染 持续时间16小时30分钟 1280X720 MP4 大小解压后&#xff1a;11.5G 语言&#xff1a;英…

六年级小学python第四讲_python第四讲

列表的排序 升序&#xff1a;从小到大的排序 降序:从大到小的排序 示例&#xff1a; num_list [120,250,11,44,77,45,22,390] num_list.sort() # 升序 - 从小到大 print(num_list) # 对列表本身做了修改 num_list.sort(reverseTrue)#降序 为False#升序 print(num_list) 反转 p…

android之AlertDialog 点击其它区域自己主动消失

遇到一个问题记录下来&#xff0c;在开发中使用了AlertDialog&#xff0c;想点击屏幕其它区域的时候让这个dialog消失&#xff0c;一開始不做不论什么设置&#xff0c;在小米手机能够正常显示&#xff0c;可是在三星中却有问题。后来发现少了一个属性&#xff1a; View dilaogV…

中级实训第一天的自学报告

目录【阅读时间&#xff1a;约10分钟】中级实训第一天的自学报告姓名&#xff1a;隐藏敏感信息 学号&#xff1a;隐藏敏感信息一、Vi/Vim二、Java三、Ant四、Junit【附加】五、SonarQube【附加】六、 编译运行BugRunner七、 总结中级实训第一天的自学报告 姓名&#xff1a;隐藏…