GO环境配置(VSCODE篇)

背景:

公司电脑虽然早已配好go环境,但是家里笔记本还没呢。搞一下,顺带记录实操过程。

go下载安装:

官网:https://golang.google.cn/

建议下载windows安装包,安装过程改路径:D:\Program Files\Go\

确认系统变量path变量多了:D:\Program Files\Go\bin

在cmd窗口中执行go,确认go命令生效。

VS code配置:

我在D盘新建了文件夹gowork(最好不要出现空格,养成习惯)

  • vs code安装code run插件

  • 用vs code打开gowork文件夹

  • 在文件夹新建main.go,此时vs code提示是否安装go扩展以及gopls,最后安装失败(如果没有科学上网肯定失败)

  • 设置代理go env -w GOPROXY=https://goproxy.cn,direct(也有其他代理,可以上网查)

  • 重启vs code,仍然提示上图。那么继续点击install all。这次全部成功,同时可以在go path路径下找到下载的gopls

go mod环境:

简单测试下go可以运行:

1
2
3
4
5
6
7
8
package main

import "fmt"

func main() {
fmt.Printf("@@@")
}

接下来新建文件夹以及文件employee.go

employee.go内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package employee

import (
"fmt"
)

type Employee struct {
FirstName string
LastName string
TotalLeaves int
LeavesTaken int
}

func (e Employee) LeavesRemaining() {
fmt.Printf("%s %s has %d leaves remaining", e.FirstName, e.LastName, (e.TotalLeaves - e.LeavesTaken))
}

main.go内容改为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main

import "employee"
//(后面修改为import "test/employee",这里test为go mod init test的对应包名)

func main() {
e := employee.Employee{
FirstName: "Sam",
LastName: "Adolf",
TotalLeaves: 30,
LeavesTaken: 20,
}
e.LeavesRemaining()
}

此时运行main.go失败,会提示包找不到(默认从GOROOT中找包),我们需要用go mod来管理新建的package employee。

在这个工作目录workspace命令窗口下执行go mod init test(test可以自己命名,同时注意会多出一个go.mod文件),然后导入包修改为import "test/employee"这里的test必须和go mod init test创建的一致。最后运行Main.go成功(不截图了)。

到了这里,你已经配置好基本环境,也能够利用go mod来管理包了。接下来试一下如何import第三方包。

外部包引用:

修改main.go内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
package main

import (
"fmt"

"github.com/jinzhu/configor"
)

func main() {
fmt.Println("hello world")
fmt.Println("使用外部包测试:", configor.Config{})
}

运行提示:

1
2
3
main.go:6:2: no required module provides package github.com/jinzhu/configor; to add it:

go get github.com/jinzhu/configor

好的,那么我们按照提示在vs code终端执行(也可以cmd执行):go get github.com/jinzhu/configor

在上文提到的go path路径下可以发现github.com/jinzhu/configor包成功下载到了本地。执行main.go成功,如下:

1
2
hello world
使用外部包测试: { false false false false 0s <nil> false}

附言:

网上很多说改vscode的setting.json,其实可以不用的,改setting.json无非就是改全局设置或者工作目录下新增一个作为单独用户配置,等有需要的时候再行设置即可。总的来说,现在go mod的包管理已经相比以前很优秀了。

另外,为啥我用vs code不用jetbrain呢?因为JetBrains已经成立中国公司捷并思了,万一哪天不让各位破解用,那还不如趁早熟悉免费的vs code。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!