Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I import 3rd party package into golang playground

Tags:

I googled but got no answer. Is it possible? If yes, how to do it?

The Go Playground link: https://play.golang.org/

like image 989
Shuo Avatar asked Jan 07 '15 03:01

Shuo


People also ask

How do I use third party library in Golang?

To install third-party packages: Download & install the third-party packages from the source repository by using the go get command. The go get command will fetch the packages from the source repository and install them on the GOPATH directory.

Can I import package main in Golang?

You cannot import the main package. Any shared code should go in a separate package, which can be imported by main (and other packages). See also groups.google.com/forum/#! topic/Golang-nuts/frh9zQPEjUk for discussion.

How do I import packages to go?

To import a package, we use import syntax followed by the package name. 💡 Unlike other programming languages, a package name can also be a subpath like some-dir/greet and Go will automatically resolve the path to the greet package for us as you will see in the nested package topic ahead.


1 Answers

Since May 14th, 2019, it is now possible (from Brad Fitzpatrick)!

The #golang playground now supports third-party imports, pulling them in via https://proxy.golang.org/

Example: https://play.golang.org/p/eqEo7mqdS9l 🎉

Multi-file support & few other things up next.
Report bugs at golang/go issue 31944, or here on the tweeters.

(On the "multiple file" support, see, since May. 16th 2019, "Which packages may be imported in the go playground?": see an example here)

netbrain suggests in the comments another example:

On the 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)) } 

woud give '30', using mat.NewVecDense() to create a column vector, and mat.Dot() to return the sum of the element-wise product of v1 and v1

The point being: gonum/mat is not part of the Go Standard Library.


Original answers:

The most complete article on Go Playground remains "Inside the Go Playground", which mentions:

  • godoc/static/static.go (for the default go program displayed in the playground)
  • golang/tools/playground for the sources, with playground/socket/socket.go building and executing the program from the playground editor.

None of those processes support importing a remote package (that would be accessed over the internet).
It is very much a self-contained system (that you can run locally as well as using it from play.golang.org), with multiple features stubbed or faked, like the network:

Like the file system, the playground's network stack is an in-process fake implemented by the syscall package.
It permits playground projects to use the loopback interface (127.0.0.1).
Requests to other hosts will fail.


Update 2017:

You have alternatives:

  • iafan/goplayspace
  • xiam/go-playground

But they still use use the official Go Playground service to build and run Go code, so that would still not allow for external imports.

like image 139
VonC Avatar answered Sep 28 '22 04:09

VonC