Which packages may be imported in the go playground?
The About button on the Playground gives some hint:
The playground can use most of the standard library, with some exceptions.
By the standard library the packages of the standard library are meant, which are listed on the Packages page, under the Standard library section. Packages listed under the Other section do not qualify (which is what you have tried - package golang.org/x/exp/ebnf
falls under the experimental and deprecated packages listed under the Other category).
A must-read link if you want to know more about the Playground implementation:
The Go Blog: Inside the Go Playground
Here is an exhaustive playground test to import all the standard library packages to show they at least can be imported, but that doesn't mean everything (or even anything) can be reasonably used from them. The only package from the standard library that gives a compile error is runtime/cgo
; "packages" without a buildable Go source file are not included for obvious reasons (because a folder is not a package if it does not contain at least one buildable Go source file).
Here's the Playground Link to try it yourself.
package main
import (
_ "archive/tar"
_ "archive/zip"
_ "bufio"
_ "bytes"
_ "compress/bzip2"
_ "compress/flate"
_ "compress/gzip"
_ "compress/lzw"
_ "compress/zlib"
_ "container/heap"
_ "container/list"
_ "container/ring"
_ "crypto"
_ "crypto/aes"
_ "crypto/cipher"
_ "crypto/des"
_ "crypto/dsa"
_ "crypto/ecdsa"
_ "crypto/elliptic"
_ "crypto/hmac"
_ "crypto/md5"
_ "crypto/rand"
_ "crypto/rc4"
_ "crypto/rsa"
_ "crypto/sha1"
_ "crypto/sha256"
_ "crypto/sha512"
_ "crypto/subtle"
_ "crypto/tls"
_ "crypto/x509"
_ "crypto/x509/pkix"
_ "database/sql"
_ "database/sql/driver"
_ "debug/dwarf"
_ "debug/elf"
_ "debug/gosym"
_ "debug/macho"
_ "debug/pe"
_ "debug/plan9obj"
_ "encoding"
_ "encoding/ascii85"
_ "encoding/asn1"
_ "encoding/base32"
_ "encoding/base64"
_ "encoding/binary"
_ "encoding/csv"
_ "encoding/gob"
_ "encoding/hex"
_ "encoding/json"
_ "encoding/pem"
_ "encoding/xml"
_ "errors"
_ "expvar"
_ "flag"
_ "fmt"
_ "go/ast"
_ "go/build"
_ "go/constant"
_ "go/doc"
_ "go/format"
_ "go/importer"
_ "go/parser"
_ "go/printer"
_ "go/scanner"
_ "go/token"
_ "go/types"
_ "hash"
_ "hash/adler32"
_ "hash/crc32"
_ "hash/crc64"
_ "hash/fnv"
_ "html"
_ "html/template"
_ "image"
_ "image/color"
_ "image/color/palette"
_ "image/draw"
_ "image/gif"
_ "image/jpeg"
_ "image/png"
_ "index/suffixarray"
_ "io"
_ "io/ioutil"
_ "log"
_ "log/syslog"
_ "math"
_ "math/big"
_ "math/cmplx"
_ "math/rand"
_ "mime"
_ "mime/multipart"
_ "mime/quotedprintable"
_ "net"
_ "net/http"
_ "net/http/cgi"
_ "net/http/cookiejar"
_ "net/http/fcgi"
_ "net/http/httptest"
_ "net/http/httputil"
_ "net/http/pprof"
_ "net/mail"
_ "net/rpc"
_ "net/rpc/jsonrpc"
_ "net/smtp"
_ "net/textproto"
_ "net/url"
_ "os"
_ "os/exec"
_ "os/signal"
_ "os/user"
_ "path"
_ "path/filepath"
_ "reflect"
_ "regexp"
_ "regexp/syntax"
_ "runtime"
// _ "runtime/cgo" // ERROR: missing Go type information
// for global symbol: .dynsym size 60
_ "runtime/debug"
_ "runtime/pprof"
_ "runtime/race"
_ "runtime/trace"
_ "sort"
_ "strconv"
_ "strings"
_ "sync"
_ "sync/atomic"
_ "syscall"
_ "testing"
_ "testing/iotest"
_ "testing/quick"
_ "text/scanner"
_ "text/tabwriter"
_ "text/template"
_ "text/template/parse"
_ "time"
_ "unicode"
_ "unicode/utf16"
_ "unicode/utf8"
_ "unsafe"
)
func main() {
println("ok")
}