Могу ли я импортировать сторонний пакет на игровую площадку Голанг

Я погуглил, но не получил ответа. Является ли это возможным? Если да, то как это сделать?

Ссылка 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).).

Если я получу возможность проверить это самостоятельно, я обновлю этот ответ более подробно.

Другие вопросы по тегам