Могу ли я импортировать сторонний пакет на игровую площадку Голанг
Я погуглил, но не получил ответа. Является ли это возможным? Если да, то как это сделать?
Ссылка Go Playground: https://play.golang.org/
2 ответа
Самая полная статья о 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:
У вас есть альтернативы:
iafan/goplayspace
xiam/go-playground
Но они по-прежнему используют официальный сервис Go Playground для создания и запуска кода Go, так что это по-прежнему не допускает внешнего импорта.
Я сам не пробовал, но xiam / go-площадка показывает, что это возможно:
Импорт пользовательских пакетов
Помните, что пользователи игровых площадок не смогут устанавливать или использовать пакеты, которые не являются частью стандартной библиотеки Go, в случае, если вы хотите продемонстрировать специальный пакет, вам нужно будет создать немного другое изображение докера поверх песочницы или небезопасный ящик...
(Далее следует пример того, как сделать это с модификацией Dockerfile.)
Это может указывать на то, что компиляция выполняется (или, по крайней мере, может быть выполнена) внутри специальной песочницы, как показано в проекте xiam / go-playstation, что делает это возможным (не требует play.golang.org, как указано в ответе @VonC).).
Если я получу возможность проверить это самостоятельно, я обновлю этот ответ более подробно.