Golang Playground无法运行我的示例代码怎么办
Golang Playground无法运行我的示例代码怎么办 我在一个项目中添加了一些示例。然而,当我在 GrB package - github.com/intel/forGraphBLASGo/GrB - Go Packages 查看它们时,却无法执行。Playground 报告说它找不到相关包的导出标识符。
我在本地检查了一切,无论是在一个干净的文件夹中使用 go test 还是 go build,一切都运行正常。
我现在感到很困惑。我遗漏了什么?
非常感谢任何提示。
更多关于Golang Playground无法运行我的示例代码怎么办的实战教程也可以访问 https://www.itying.com/category-94-b0.html
希望这能帮助你解决问题…!
更多关于Golang Playground无法运行我的示例代码怎么办的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
非常感谢您的详细回复。我会去开一个issue,看看他们怎么说。
列表中唯一可能适用的是执行时间限制,主要是因为编译该库需要较长的时间。非常感谢您的回复!
好的,我不需要提交问题了,因为我发现了这个:https://go-review.googlesource.com/c/playground/+/297636 - 他们已经意识到 Playground 在 cgo 方面有所欠缺。
此外也存在一些限制,例如: Playground 可以使用大部分标准库,但有一些例外。Playground 程序与外界通信的唯一方式是通过写入标准输出和标准错误。 在 Playground 中,时间从 2009-11-10 23:00:00 UTC 开始(确定此日期意义的任务留给读者)。通过提供确定性的输出,这使缓存程序变得更加容易。 执行时间以及 CPU 和内存使用也有限制。
是的——我在上面链接的那个变更集中的那行代码就是。我只是想知道他们是否有变通办法或建议。那是2021年的,上面确实写着:
未来,我们或许能让CGO程序在gVisor沙箱中安全地构建和运行。
总之,很抱歉这不是一个更令人满意的结果。
看起来你在Go Playground中运行示例时遇到了包导入问题。这通常是因为Playground的环境限制导致的。让我分析一下并提供解决方案。
问题分析: Go Playground有特定的限制:
- 只能访问标准库和少数几个白名单中的第三方包
- 无法访问需要CGO的包
- 无法访问网络资源
解决方案:
在你的示例代码中,需要添加构建约束来避免在Playground中执行。这是标准做法:
//go:build !playground
// +build !playground
package yourpackage
import (
"fmt"
"github.com/intel/forGraphBLASGo/GrB"
)
func Example() {
// 你的示例代码
fmt.Println("这个示例不会在Playground中运行")
}
或者,为Playground创建专门的示例版本:
// 主示例文件(正常使用)
//go:build !playground
// +build !playground
package yourpackage
import "github.com/intel/forGraphBLASGo/GrB"
func ExampleReal() {
// 使用真实包的代码
}
// Playground专用示例文件
//go:build playground
// +build playground
package yourpackage
import "fmt"
func ExamplePlayground() {
// 使用模拟或简化版本的代码
fmt.Println("这是在Playground中运行的简化示例")
}
检查你的go.mod: 确保你的模块声明正确:
module github.com/intel/forGraphBLASGo
go 1.xx
require (
// 依赖
)
文档中的示例标记: 在godoc中,你可以这样组织示例:
// 正常示例(带构建约束)
//go:build !playground
package GrB_test
import (
"fmt"
"github.com/intel/forGraphBLASGo/GrB"
)
func ExampleMatrix_multiply() {
// 真实实现
}
// Playground兼容示例
//go:build playground
package GrB_test
import "fmt"
func ExampleMatrix_multiply() {
fmt.Println("Matrix multiplication example (simplified for Playground)")
// 简化实现,不使用实际包
}
这样配置后,你的示例在本地和文档中都能正常工作,同时避免了Playground的环境限制问题。

