无法从VSCode运行Golang Playground代码的解决方法
无法从VSCode运行Golang Playground代码的解决方法 我的系统环境变量是:
$ echo $GOPATH $GOROOT
C:\go-work C:\Go\
项目路径:
C:\go-work\src\packtest
项目结构:
packtest
util
util.go
main.go
当我从Visual Studio Code运行"Run On Go Playground"时,出现以下错误:
Upload to the Go Playground failed.
prog.go:5:2: cannot find package “packtest/util” in any of:
/usr/local/go/src/packtest/util (from $GOROOT)
/go/src/packtest/util (from $GOPATH)
项目已经在系统路径中,但VSC在不同的文件夹中查找文件。如何解决这个问题?
注:如果在VSC中通过命令行运行(不在playground中),它可以正常工作
更多关于无法从VSCode运行Golang Playground代码的解决方法的实战教程也可以访问 https://www.itying.com/category-94-b0.html
hi,看起来是这样的。
更多关于无法从VSCode运行Golang Playground代码的解决方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
// 代码部分保持原样
是否可能是因为"Run On Go Playground"只是上传了选定的文件,而Go Playground实际上无法处理多个文件?然后它尝试在Go Playground机器上导入util包,但在提供的目录中找不到它。
问题在于Go Playground是一个沙盒环境,它无法访问您本地的文件系统和GOPATH。当您使用"Run On Go Playground"功能时,VSCode会尝试将代码上传到Go Playground服务器,但服务器无法找到您的本地包packtest/util。
解决方案是将所有相关代码合并到一个文件中,或者使用Go Playground支持的导入方式。以下是修改后的代码示例:
main.go
package main
import (
"fmt"
"strings"
)
// 将util包的内容直接放在main文件中
func reverseString(s string) string {
runes := []rune(s)
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}
func toUpperCase(s string) string {
return strings.ToUpper(s)
}
func main() {
text := "hello world"
reversed := reverseString(text)
upper := toUpperCase(text)
fmt.Printf("Original: %s\n", text)
fmt.Printf("Reversed: %s\n", reversed)
fmt.Printf("Uppercase: %s\n", upper)
}
如果您确实需要保持包结构,可以使用Go Playground支持的第三方包,或者将util包的内容内联到main文件中。例如,原来的util.go内容:
util.go(原始内容)
package util
import "strings"
func ReverseString(s string) string {
runes := []rune(s)
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}
func ToUpperCase(s string) string {
return strings.ToUpper(s)
}
main.go(原始内容)
package main
import (
"fmt"
"packtest/util"
)
func main() {
text := "hello world"
reversed := util.ReverseString(text)
upper := util.ToUpperCase(text)
fmt.Printf("Original: %s\n", text)
fmt.Printf("Reversed: %s\n", reversed)
fmt.Printf("Uppercase: %s\n", upper)
}
在Go Playground中运行包含本地包引用的代码时,必须将所有代码放在单个文件中,因为Playground不支持多文件项目中的本地包导入。

