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

7 回复

希望这能帮助你解决问题…!

更多关于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有特定的限制:

  1. 只能访问标准库和少数几个白名单中的第三方包
  2. 无法访问需要CGO的包
  3. 无法访问网络资源

解决方案:

在你的示例代码中,需要添加构建约束来避免在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的环境限制问题。

回到顶部