我用谷歌搜索但没有答案。是否可以?如果是,该怎么做?
Go Playground 链接: https: //play.golang.org/
自 2019 年 5 月 14 日起,现在可以(来自Brad Fitzpatrick)!
#golang 游乐场现在支持第三方导入,通过https://proxy.golang.org/将它们拉入
示例: https: //play.golang.org/p/eqEo7mqdS9l
多文件支持和其他一些东西。在issue 31944或在高音扬声器上
报告错误。golang/go
(关于“多文件”支持,请参阅自 2019 年 5 月 16 日起,“哪些包可以在 go playground 中导入? ”:请参见此处的示例)
在操场上:
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()
返回和的元素乘积之v1
和v1
重点是:gonum/mat
不是Go Standard Library的一部分。
原始答案:
Go Playground 上最完整的文章仍然是“ Inside the Go Playground ”,其中提到:
godoc/static/static.go
(对于显示在操场上的默认围棋程序)golang/tools/playground
对于源代码,playground/socket/socket.go
从操场编辑器构建和执行程序。这些进程都不支持导入远程包(可以通过 Internet 访问)。
它是一个非常独立的系统(您可以在本地运行,也可以从 play.golang.org 使用它),具有多个功能被存根或伪造,例如网络:
与文件系统一样,playground 的网络堆栈是由 syscall 包实现的进程内伪造。
它允许游乐场项目使用环回接口 (127.0.0.1)。
对其他主机的请求将失败。
2017 年更新:
你有其他选择:
但是他们仍然使用官方的 Go Playground 服务来构建和运行 Go 代码,因此仍然不允许外部导入。
我自己没有尝试过,但xiam/go-playground表明这是可能的:
导入自定义包
请记住,playground 用户将无法安装或使用不属于 Go 标准库的包,如果您想展示一个特殊的包,您必须在沙箱之上创建一个稍微不同的 docker 映像或不安全的盒子...
(后面是如何通过修改 Dockerfile 来做到这一点的示例。)
这似乎表明编译是(或至少可以)在自定义沙箱中执行的,如 xiam/go-playground 项目中所示,从而使这成为可能(不需要 play.golang.org,如@VonC 的回答所示)。
如果我有机会自己测试一下,我会更详细地更新这个答案。