【问题标题】:Can I import 3rd party package into golang playground我可以将 3rd 方包导入 golang 游乐场吗
【发布时间】:2019-05-16 12:44:15
【问题描述】:

我用谷歌搜索但没有得到答案。可能吗?如果是,怎么做?

Go Playground 链接:https://play.golang.org/

【问题讨论】:

标签: go go-playground


【解决方案1】:

自 2019 年 5 月 14 日起,it is now possible(来自Brad Fitzpatrick)!

#golang 游乐场现在支持第三方导入,通过 https://proxy.golang.org/ 拉入它们

例如:https://play.golang.org/p/eqEo7mqdS9l?

多文件支持以及接下来的一些其他内容。
golang/go issue 31944 或在推特上报告错误。

(关于“多文件”支持,请参阅自 2019 年 5 月 16 日起,“Which packages may be imported in the go playground?”:请参阅example here

netbrain 建议in the comments 另一个example

在操场上:

package main

import (
    "fmt"

    "gonum.org/v1/gonum/mat"
)

func main() {
    v1 := mat.NewVecDense(4,[]float64{1,2,3,4})
    fmt.Println(mat.Dot(v1,v1))
}

将给出'30',使用mat.NewVecDense() 创建列向量,并使用mat.Dot() 返回v1v1 的元素乘积之和

重点是:gonum/mat 不是Go Standard Library 的一部分。


原始答案:

Go Playground 上最完整的文章仍然是“Inside the Go Playground”,其中提到:

这些进程都不支持导入远程包(可以通过互联网访问)。
它是一个非常独立的系统(您可以在本地运行,也可以从 play.golang.org 使用它),具有多个功能被存根或伪造,例如网络:

与文件系统一样,playground 的网络堆栈是由 syscall 包实现的进程内伪造。
它允许 Playground 项目使用环回接口 (127.0.0.1)。
对其他主​​机的请求将失败


2017 年更新:

你有其他选择:

但他们仍然使用官方 Go Playground 服务来构建和运行 Go 代码,因此仍然不允许外部导入。

【讨论】:

  • @netbrain 谢谢。我已将您的示例包含在答案中以提高知名度。
【解决方案2】:

我自己没有尝试过,但xiam/go-playground 表示这是可能的:

导入自定义包

请记住,playground 用户将无法安装或使用不属于 Go 标准库的包,如果您想展示一个特殊的包,您必须在其之上创建一个稍微不同的 docker 映像沙盒或不安全盒...

(后面是如何通过修改 Dockerfile 来做到这一点的示例。)

这似乎表明编译是(或至少可以)在自定义沙箱内执行,如 xiam/go-playground 项目中所示,从而使这成为可能(不需要 play.golang.org,如@VonC 的回答)。

如果我有机会自己测试一下,我会更详细地更新这个答案。

【讨论】:

    猜你喜欢
    • 2015-12-19
    • 2021-07-07
    • 2017-01-15
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 2015-03-28
    • 2016-06-21
    • 2015-12-20
    相关资源
    最近更新 更多