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

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

Ссылка на Go Playground: https://play.golang.org/

Ответ 1

С 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 ", в которой упоминается:

Ни один из этих процессов не поддерживает импорт удаленного пакета (который будет доступен через Интернет).
Это очень автономная система (которую вы можете запускать локально, а также использовать ее с play.golang.org), с множеством функций, которые могут быть скрыты или подделаны, например, сеть:

Как и файловая система, сетевой стек игровой площадки представляет собой внутрипроцессную подделку, реализованную пакетом syscall.
Это позволяет проектам игровых площадок использовать интерфейс обратной связи (127.0.0.1).
Запросы к другим хостам не будут выполнены.


Обновление 2017:

У вас есть альтернативы:

Но они по-прежнему используют официальный сервис Go Playground для создания и запуска кода Go, так что это по-прежнему не допускает внешнего импорта.

Ответ 2

Я сам не пробовал, но xiam/go-площадка показывает, что это возможно:

Импорт пользовательских пакетов

Помните, что пользователи игровых площадок не смогут устанавливать или использовать пакеты, которые не являются частью стандартной библиотеки Go, в случае, если вы хотите продемонстрировать специальный пакет, вам нужно будет создать немного другое изображение докера поверх песочницы или небезопасный ящик...

(Далее следует пример того, как сделать это с модификацией Dockerfile.)

Казалось бы, это указывает на то, что компиляция (или, по крайней мере, ее выполнение) выполняется внутри специальной песочницы, как показано в проекте xiam/go-playstation, что делает это возможным (не требует play.golang.org, как указано в ответе @VonC).

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