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



一.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 main
 
import "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 main

import "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 main

import (
	"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 stringutil

import "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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值