Я googled, но не получил ответа. Является ли это возможным? Если да, как это сделать?
Ссылка на Go Playground: https://play.golang.org/
Я googled, но не получил ответа. Является ли это возможным? Если да, как это сделать?
Ссылка на Go Playground: https://play.golang.org/
С 14 мая 2019 года это стало возможным (от Брэда Фицпатрика)!
Игровая площадка #golang теперь поддерживает сторонний импорт, добавляя его через https://proxy.golang.org/
Пример: https://play.golang.org/p/eqEo7mqdS9l 🎉
Поддержка нескольких файлов и еще немного других вещей.
Сообщайте об ошибках вgolang/go
31944 или здесь, в твитерах.
(О поддержке "нескольких файлов" см., Начиная с 16 мая 2019 года, " Какие пакеты могут быть импортированы на игровой площадке go? ": См. Пример здесь)
netbrain предлагает в комментариях еще один пример:
На площадке:
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))
}
woud дают '30', используя mat.NewVecDense()
чтобы создать вектор столбца, и mat.Dot()
чтобы возвратить сумму поэлементного произведения v1
и v1
Дело в том, что gonum/mat
не является частью стандартной библиотеки Go.
Оригинальные ответы:
Самая полная статья о Go Playground остается " Внутри Go Playground ", в которой упоминается:
godoc/static/static.go
(для программы go по умолчанию, отображаемой на игровой площадке)golang/tools/playground
для исходников, со playground/socket/socket.go
и выполнением программы из редактора игровой площадки. Ни один из этих процессов не поддерживает импорт удаленного пакета (который будет доступен через Интернет).
Это очень автономная система (которую вы можете запускать локально, а также использовать ее с play.golang.org), с множеством функций, которые могут быть скрыты или подделаны, например, сеть:
Как и файловая система, сетевой стек игровой площадки представляет собой внутрипроцессную подделку, реализованную пакетом syscall.
Это позволяет проектам игровых площадок использовать интерфейс обратной связи (127.0.0.1).
Запросы к другим хостам не будут выполнены.
Обновление 2017:
У вас есть альтернативы:
Но они по-прежнему используют официальный сервис Go Playground для создания и запуска кода Go, так что это по-прежнему не допускает внешнего импорта.
Я сам не пробовал, но xiam/go-площадка показывает, что это возможно:
Импорт пользовательских пакетов
Помните, что пользователи игровых площадок не смогут устанавливать или использовать пакеты, которые не являются частью стандартной библиотеки Go, в случае, если вы хотите продемонстрировать специальный пакет, вам нужно будет создать немного другое изображение докера поверх песочницы или небезопасный ящик...
(Далее следует пример того, как сделать это с модификацией Dockerfile.)
Казалось бы, это указывает на то, что компиляция (или, по крайней мере, ее выполнение) выполняется внутри специальной песочницы, как показано в проекте xiam/go-playstation, что делает это возможным (не требует play.golang.org, как указано в ответе @VonC).
Если я получу возможность проверить это самостоятельно, я обновлю этот ответ более подробно.