Golang环境配置指南

Golang环境配置指南 大家好,

我没有任何Go语言编程经验,但有几年的PHP开发经历。经过研究,发现Go语言非常值得学习。

作为网页开发者,之前没有复杂的环境配置经验,通常只需编写代码并上传文件即可,因此安装Go对我来说是个新挑战。

  • 已成功安装Go语言,Go服务器正在我的机器上运行
  • 已创建包含src、pkg和bin的新目录
  • 已修改GOBIN和GOPATH环境变量
  • 已创建hello.go文件

但我无法运行或构建代码。

C:\Users\Bas>go env
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\Bas\AppData\Local\go-build
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=D:\gocode
set GOPROXY=
set GORACE=
set GOROOT=C:\Go
set GOTMPDIR=
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\Bas\AppData\Local\Temp\go-build767200714=/tmp/go-build -gno-record-gcc-switches

C:\Users\Bas>go run d:\gocode\src\hello
package d:/gocode/src/hello: cannot find package "d:/gocode/src/hello" in any of:
C:\Go\src\d:\gocode\src\hello (from $GOROOT)
D:\gocode\src\d:\gocode\src\hello (from $GOPATH)

C:\Users\Bas>

有什么建议吗?谢谢!


更多关于Golang环境配置指南的实战教程也可以访问 https://www.itying.com/category-94-b0.html

6 回复

很好。不过我仍然建议你研究一下 Go 模块 😊

更多关于Golang环境配置指南的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在构建代码之前,您应该按照以下方式设置GOPATH环境变量:

set GOPATH=D:\gocode

Bas_van_den_Hooff:

Go 服务器正在我的机器上运行。

什么是“Go 服务器”?你能分享你的 hello.go 代码吗,也许在 一个 Gist 中?

你好,

有点尴尬,但我想我可能把包和编译器(?)安装在了C盘,而我的gocode目录却在D盘。这会不会是问题所在呢?

我更喜欢现在的位置:D盘 > gocode > src、pkg和bin,因为这样非常整洁且易于导航。

我是否应该把GoLang也重新安装到D盘?顺便说一下,我不使用GitHub。

package main

import "fmt"

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

我不会将任何源代码放在 $GOPATH 中。我会把它放在我的配置文件/主目录中的任何位置,如果是一个没有外部依赖的简单一/两个文件程序,我会使用例如 go run hello.go 来运行它,或者使用 go build -o hello hello.go 来构建它。

另一方面,如果是一个有外部依赖的程序,我会创建一个文件夹并在其中初始化一个模块:

C:> mkdir hello
C:> cd hello
C:> go mod init github.com/johandalabacka/hello

你实际上可以为你的模块命名任何名称,但如果你使用 GitHub,最好以仓库名称命名。模块是 Go 1.11 中的新功能,并且是未来的方向。遗憾的是,如果你在互联网上搜索,会发现很多人把东西放在 GOPATH 中的例子。在这里阅读更多关于模块的信息:https://github.com/golang/go/wiki/Modules

从你的描述和错误信息来看,问题在于Go模块的组织方式。在Go 1.11及以后版本中,推荐使用Go Modules来管理依赖,而不是传统的GOPATH工作区结构。

首先检查你的目录结构。在D:\gocode\src\hello目录下,应该有一个包含package main声明的Go文件。

以下是正确的设置方法:

  1. 创建正确的目录结构:
D:\gocode\
└── src/
    └── hello/
        ├── go.mod
        └── hello.go
  1. hello目录中初始化Go模块:
cd d:\gocode\src\hello
go mod init hello
  1. 创建hello.go文件示例:
package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}
  1. 运行程序的正确方式:
# 在hello目录中运行
cd d:\gocode\src\hello
go run .

# 或者指定文件
go run hello.go

# 构建可执行文件
go build

# 安装到GOPATH/bin
go install
  1. 如果你坚持使用传统GOPATH模式,确保目录结构正确:
D:\gocode\
├── bin/
├── pkg/
└── src/
    └── hello/
        └── hello.go

然后从hello目录运行:

cd d:\gocode\src\hello
go run hello.go

错误信息显示Go在查找包时路径不正确,这是因为你使用了绝对路径go run d:\gocode\src\hello。Go期望的是包路径而不是文件系统路径。使用Go Modules是现代Go开发的标准做法,建议采用这种方式。

回到顶部