Heim >Backend-Entwicklung >Golang >Welche Standardbibliothekspakete sind im Go Playground eingeschränkt und warum?

Welche Standardbibliothekspakete sind im Go Playground eingeschränkt und warum?

Linda Hamilton
Linda HamiltonOriginal
2024-11-22 06:46:14222Durchsuche

Which standard library packages are restricted in the Go Playground, and why?

Eingeschränkte Importe im Go Playground

Der Go Playground bietet eine praktische Umgebung zum Testen von Go-Codefragmenten. Es gibt jedoch bestimmte Einschränkungen, welche Pakete im Playground importiert werden können.

Informationen zu den Einschränkungen

Die Schaltfläche „Info“ im Playground enthält die folgenden Informationen:

„Der Spielplatz kann mit einigen Ausnahmen den größten Teil der Standardbibliothek nutzen.“

Diese Aussage stellt klar, dass Pakete aus der Standardbibliothek im Allgemeinen importierbar sind, dies jedoch nicht alle.

Importe aus der Standardbibliothek

Die Standardbibliothekspakete sind im Abschnitt „Standardbibliothek“ auf der Seite „Pakete“ aufgeführt. Pakete, die im Abschnitt „Andere“ aufgeführt sind, wie z. B. golang.org/x/exp/ebnf, können jedoch nicht in den Playground importiert werden.

Warum die Einschränkungen?

Die eingeschränkten Importe des Playgrounds sind größtenteils auf Sicherheits- und Funktionalitätserwägungen zurückzuführen. Das Importieren externer Pakete kann Sicherheitsrisiken und Leistungsprobleme mit sich bringen, insbesondere in der uneingeschränkten Umgebung des Playgrounds.

Ein umfassender Test von Standardbibliotheksimporten

Um die Importierbarkeit von Standardbibliothekspaketen zu demonstrieren, Folgendes Code-Snippet importiert jedes Paket in der Standardbibliothek (mit Ausnahme derjenigen ohne erstellbare Go-Quelldateien):

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/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")
}

Probieren Sie es in der aus Playground, um die vollständige Liste der importierbaren Pakete anzuzeigen.

Das obige ist der detaillierte Inhalt vonWelche Standardbibliothekspakete sind im Go Playground eingeschränkt und warum?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn