Directory src
Standard library ▸
Standard library ▾

Name | Synopsis |
---|---|
archive | |
tar | Package tar implements access to tar archives. |
zip | Package zip provides support for reading and writing ZIP archives. |
arena | The arena package provides the ability to allocate memory for a collection of Go values and free that space manually all at once, safely. |
bufio | Package bufio implements buffered I/O. It wraps an io.Reader or io.Writer object, creating another object (Reader or Writer) that also implements the interface but provides buffering and some help for textual I/O. |
builtin | Package builtin provides documentation for Go's predeclared identifiers. |
bytes | Package bytes implements functions for the manipulation of byte slices. |
cmd | |
addr2line | Addr2line is a minimal simulation of the GNU addr2line tool, just enough to support pprof. |
asm | Asm, typically invoked as “go tool asm”, assembles the source file into an object file named for the basename of the argument source file with a .o suffix. |
buildid | Buildid displays or updates the build ID stored in a Go package or binary. |
cgo | Cgo enables the creation of Go packages that call C code. |
compile | Compile, typically invoked as “go tool compile,” compiles a single Go package comprising the files named on the command line. |
covdata | Covdata is a program for manipulating and generating reports from 2nd-generation coverage testing output files, those produced from running applications or integration tests. |
cover | Cover is a program for analyzing the coverage profiles generated by 'go test -coverprofile=cover.out'. |
dist | Dist helps bootstrap, build, and test the Go distribution. |
distpack | Distpack creates the tgz and zip files for a Go distribution. |
doc | Doc (usually run as go doc) accepts zero, one or two arguments. |
fix | Fix finds Go programs that use old APIs and rewrites them to use newer ones. |
go | Go is a tool for managing Go source code. |
gofmt | Gofmt formats Go programs. |
link | Link, typically invoked as “go tool link”, reads the Go archive or object for a package main, along with its dependencies, and combines them into an executable binary. |
nm | Nm lists the symbols defined or used by an object file, archive, or executable. |
objdump | Objdump disassembles executable files. |
pack | Pack is a simple version of the traditional Unix ar tool. |
pprof | Pprof interprets and displays profiles of Go programs. |
preprofile | Preprofile creates an intermediate representation of a pprof profile for use during PGO in the compiler. |
test2json | Test2json converts go test output to a machine-readable JSON stream. |
tools | |
trace | Trace is a tool for viewing trace files. |
vet | Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string. |
cmp | Package cmp provides types and functions related to comparing ordered values. |
compress | |
bzip2 | Package bzip2 implements bzip2 decompression. |
flate | Package flate implements the DEFLATE compressed data format, described in RFC 1951. |
gzip | Package gzip implements reading and writing of gzip format compressed files, as specified in RFC 1952. |
lzw | Package lzw implements the Lempel-Ziv-Welch compressed data format, described in T. A. Welch, “A Technique for High-Performance Data Compression”, Computer, 17(6) (June 1984), pp 8-19. |
zlib | Package zlib implements reading and writing of zlib format compressed data, as specified in RFC 1950. |
container | |
heap | Package heap provides heap operations for any type that implements heap.Interface. |
list | Package list implements a doubly linked list. |
ring | Package ring implements operations on circular lists. |
context | Package context defines the Context type, which carries deadlines, cancellation signals, and other request-scoped values across API boundaries and between processes. |
crypto | Package crypto collects common cryptographic constants. |
aes | Package aes implements AES encryption (formerly Rijndael), as defined in U.S. Federal Information Processing Standards Publication 197. |
boring | Package boring exposes functions that are only available when building with Go+BoringCrypto. |
cipher | Package cipher implements standard block cipher modes that can be wrapped around low-level block cipher implementations. |
des | Package des implements the Data Encryption Standard (DES) and the Triple Data Encryption Algorithm (TDEA) as defined in U.S. Federal Information Processing Standards Publication 46-3. |
dsa | Package dsa implements the Digital Signature Algorithm, as defined in FIPS 186-3. |
ecdh | Package ecdh implements Elliptic Curve Diffie-Hellman over NIST curves and Curve25519. |
ecdsa | Package ecdsa implements the Elliptic Curve Digital Signature Algorithm, as defined in [FIPS 186-5]. |
ed25519 | Package ed25519 implements the Ed25519 signature algorithm. |
elliptic | Package elliptic implements the standard NIST P-224, P-256, P-384, and P-521 elliptic curves over prime fields. |
fips140 | |
hkdf | Package hkdf implements the HMAC-based Extract-and-Expand Key Derivation Function (HKDF) as defined in RFC 5869. |
hmac | Package hmac implements the Keyed-Hash Message Authentication Code (HMAC) as defined in U.S. Federal Information Processing Standards Publication 198. |
md5 | Package md5 implements the MD5 hash algorithm as defined in RFC 1321. |
mlkem | Package mlkem implements the quantum-resistant key encapsulation method ML-KEM (formerly known as Kyber), as specified in [NIST FIPS 203]. |
pbkdf2 | Package pbkdf2 implements the key derivation function PBKDF2 as defined in RFC 8018 (PKCS #5 v2.1). |
rand | Package rand implements a cryptographically secure random number generator. |
rc4 | Package rc4 implements RC4 encryption, as defined in Bruce Schneier's Applied Cryptography. |
rsa | Package rsa implements RSA encryption as specified in PKCS #1 and RFC 8017. |
sha1 | Package sha1 implements the SHA-1 hash algorithm as defined in RFC 3174. |
sha256 | Package sha256 implements the SHA224 and SHA256 hash algorithms as defined in FIPS 180-4. |
sha3 | Package sha3 implements the SHA-3 hash algorithms and the SHAKE extendable output functions defined in FIPS 202. |
sha512 | Package sha512 implements the SHA-384, SHA-512, SHA-512/224, and SHA-512/256 hash algorithms as defined in FIPS 180-4. |
subtle | Package subtle implements functions that are often useful in cryptographic code but require careful thought to use correctly. |
tls | Package tls partially implements TLS 1.2, as specified in RFC 5246, and TLS 1.3, as specified in RFC 8446. |
fipsonly | Package fipsonly restricts all TLS configuration to FIPS-approved settings. |
x509 | Package x509 implements a subset of the X.509 standard. |
pkix | Package pkix contains shared, low level structures used for ASN.1 parsing and serialization of X.509 certificates, CRL and OCSP. |
database | |
sql | Package sql provides a generic interface around SQL (or SQL-like) databases. |
driver | Package driver defines interfaces to be implemented by database drivers as used by package sql. |
debug | |
buildinfo | Package buildinfo provides access to information embedded in a Go binary about how it was built. |
dwarf | Package dwarf provides access to DWARF debugging information loaded from executable files, as defined in the DWARF 2.0 Standard at http://dwarfstd.org/doc/dwarf-2.0.0.pdf. |
elf | Package elf implements access to ELF object files. |
gosym | Package gosym implements access to the Go symbol and line number tables embedded in Go binaries generated by the gc compilers. |
macho | Package macho implements access to Mach-O object files. |
pe | Package pe implements access to PE (Microsoft Windows Portable Executable) files. |
plan9obj | Package plan9obj implements access to Plan 9 a.out object files. |
embed | Package embed provides access to files embedded in the running Go program. |
encoding | Package encoding defines interfaces shared by other packages that convert data to and from byte-level and textual representations. |
ascii85 | Package ascii85 implements the ascii85 data encoding as used in the btoa tool and Adobe's PostScript and PDF document formats. |
asn1 | Package asn1 implements parsing of DER-encoded ASN.1 data structures, as defined in ITU-T Rec X.690. |
base32 | Package base32 implements base32 encoding as specified by RFC 4648. |
base64 | Package base64 implements base64 encoding as specified by RFC 4648. |
binary | Package binary implements simple translation between numbers and byte sequences and encoding and decoding of varints. |
csv | Package csv reads and writes comma-separated values (CSV) files. |
gob | Package gob manages streams of gobs - binary values exchanged between an [Encoder] (transmitter) and a [Decoder] (receiver). |
hex | Package hex implements hexadecimal encoding and decoding. |
json | Package json implements encoding and decoding of JSON as defined in RFC 7159. |
pem | Package pem implements the PEM data encoding, which originated in Privacy Enhanced Mail. |
xml | Package xml implements a simple XML 1.0 parser that understands XML name spaces. |
errors | Package errors implements functions to manipulate errors. |
expvar | Package expvar provides a standardized interface to public variables, such as operation counters in servers. |
flag | Package flag implements command-line flag parsing. |
fmt | Package fmt implements formatted I/O with functions analogous to C's printf and scanf. |
go | |
ast | Package ast declares the types used to represent syntax trees for Go packages. |
build | Package build gathers information about Go packages. |
constraint | Package constraint implements parsing and evaluation of build constraint lines. |
constant | Package constant implements Values representing untyped Go constants and their corresponding operations. |
doc | Package doc extracts source code documentation from a Go AST. |
comment | Package comment implements parsing and reformatting of Go doc comments, (documentation comments), which are comments that immediately precede a top-level declaration of a package, const, func, type, or var. |
format | Package format implements standard formatting of Go source. |
importer | Package importer provides access to export data importers. |
parser | Package parser implements a parser for Go source files. |
printer | Package printer implements printing of AST nodes. |
scanner | Package scanner implements a scanner for Go source text. |
token | Package token defines constants representing the lexical tokens of the Go programming language and basic operations on tokens (printing, predicates). |
types | Package types declares the data types and implements the algorithms for type-checking of Go packages. |
version | Package version provides operations on [Go versions] in [Go toolchain name syntax]: strings like "go1.20", "go1.21.0", "go1.22rc2", and "go1.23.4-bigcorp". |
hash | Package hash provides interfaces for hash functions. |
adler32 | Package adler32 implements the Adler-32 checksum. |
crc32 | Package crc32 implements the 32-bit cyclic redundancy check, or CRC-32, checksum. |
crc64 | Package crc64 implements the 64-bit cyclic redundancy check, or CRC-64, checksum. |
fnv | Package fnv implements FNV-1 and FNV-1a, non-cryptographic hash functions created by Glenn Fowler, Landon Curt Noll, and Phong Vo. |
maphash | Package maphash provides hash functions on byte sequences and comparable values. |
html | Package html provides functions for escaping and unescaping HTML text. |
template | Package template (html/template) implements data-driven templates for generating HTML output safe against code injection. |
image | Package image implements a basic 2-D image library. |
color | Package color implements a basic color library. |
palette | Package palette provides standard color palettes. |
draw | Package draw provides image composition functions. |
gif | Package gif implements a GIF image decoder and encoder. |
jpeg | Package jpeg implements a JPEG image decoder and encoder. |
png | Package png implements a PNG image decoder and encoder. |
index | |
suffixarray | Package suffixarray implements substring search in logarithmic time using an in-memory suffix array. |
io | Package io provides basic interfaces to I/O primitives. |
fs | Package fs defines basic interfaces to a file system. |
ioutil | Package ioutil implements some I/O utility functions. |
iter | Package iter provides basic definitions and operations related to iterators over sequences. |
log | Package log implements a simple logging package. |
slog | Package slog provides structured logging, in which log records include a message, a severity level, and various other attributes expressed as key-value pairs. |
syslog | Package syslog provides a simple interface to the system log service. |
maps | Package maps defines various functions useful with maps of any type. |
math | Package math provides basic constants and mathematical functions. |
big | Package big implements arbitrary-precision arithmetic (big numbers). |
bits | Package bits implements bit counting and manipulation functions for the predeclared unsigned integer types. |
cmplx | Package cmplx provides basic constants and mathematical functions for complex numbers. |
rand | Package rand implements pseudo-random number generators suitable for tasks such as simulation, but it should not be used for security-sensitive work. |
v2 | Package rand implements pseudo-random number generators suitable for tasks such as simulation, but it should not be used for security-sensitive work. |
mime | Package mime implements parts of the MIME spec. |
multipart | Package multipart implements MIME multipart parsing, as defined in RFC 2046. |
quotedprintable | Package quotedprintable implements quoted-printable encoding as specified by RFC 2045. |
net | Package net provides a portable interface for network I/O, including TCP/IP, UDP, domain name resolution, and Unix domain sockets. |
http | Package http provides HTTP client and server implementations. |
cgi | Package cgi implements CGI (Common Gateway Interface) as specified in RFC 3875. |
cookiejar | Package cookiejar implements an in-memory RFC 6265-compliant http.CookieJar. |
fcgi | Package fcgi implements the FastCGI protocol. |
httptest | Package httptest provides utilities for HTTP testing. |
httptrace | Package httptrace provides mechanisms to trace the events within HTTP client requests. |
httputil | Package httputil provides HTTP utility functions, complementing the more common ones in the net/http package. |
pprof | Package pprof serves via its HTTP server runtime profiling data in the format expected by the pprof visualization tool. |
Package mail implements parsing of mail messages. | |
netip | Package netip defines an IP address type that's a small value type. |
rpc | Package rpc provides access to the exported methods of an object across a network or other I/O connection. |
jsonrpc | Package jsonrpc implements a JSON-RPC 1.0 ClientCodec and ServerCodec for the rpc package. |
smtp | Package smtp implements the Simple Mail Transfer Protocol as defined in RFC 5321. |
textproto | Package textproto implements generic support for text-based request/response protocols in the style of HTTP, NNTP, and SMTP. |
url | Package url parses URLs and implements query escaping. |
os | Package os provides a platform-independent interface to operating system functionality. |
exec | Package exec runs external commands. |
signal | Package signal implements access to incoming signals. |
user | Package user allows user account lookups by name or id. |
path | Package path implements utility routines for manipulating slash-separated paths. |
filepath | Package filepath implements utility routines for manipulating filename paths in a way compatible with the target operating system-defined file paths. |
plugin | Package plugin implements loading and symbol resolution of Go plugins. |
reflect | Package reflect implements run-time reflection, allowing a program to manipulate objects with arbitrary types. |
regexp | Package regexp implements regular expression search. |
syntax | Package syntax parses regular expressions into parse trees and compiles parse trees into programs. |
runtime | Package runtime contains operations that interact with Go's runtime system, such as functions to control goroutines. |
asan | |
cgo | Package cgo contains runtime support for code generated by the cgo tool. |
coverage | Package coverage contains APIs for writing coverage profile data at runtime from long-running and/or server programs that do not terminate via os.Exit. |
debug | Package debug contains facilities for programs to debug themselves while they are running. |
metrics | Package metrics provides a stable interface to access implementation-defined metrics exported by the Go runtime. |
msan | |
pprof | Package pprof writes runtime profiling data in the format expected by the pprof visualization tool. |
race | Package race implements data race detection logic. |
trace | Package trace contains facilities for programs to generate traces for the Go execution tracer. |
slices | Package slices defines various functions useful with slices of any type. |
sort | Package sort provides primitives for sorting slices and user-defined collections. |
strconv | Package strconv implements conversions to and from string representations of basic data types. |
strings | Package strings implements simple functions to manipulate UTF-8 encoded strings. |
structs | Package structs defines marker types that can be used as struct fields to modify the properties of a struct. |
sync | Package sync provides basic synchronization primitives such as mutual exclusion locks. |
atomic | Package atomic provides low-level atomic memory primitives useful for implementing synchronization algorithms. |
syscall | Package syscall contains an interface to the low-level operating system primitives. |
js | Package js gives access to the WebAssembly host environment when using the js/wasm architecture. |
testing | Package testing provides support for automated testing of Go packages. |
fstest | Package fstest implements support for testing implementations and users of file systems. |
iotest | Package iotest implements Readers and Writers useful mainly for testing. |
quick | Package quick implements utility functions to help with black box testing. |
slogtest | Package slogtest implements support for testing implementations of log/slog.Handler. |
synctest | Package synctest provides support for testing concurrent code. |
text | |
scanner | Package scanner provides a scanner and tokenizer for UTF-8-encoded text. |
tabwriter | Package tabwriter implements a write filter (tabwriter.Writer) that translates tabbed columns in input into properly aligned text. |
template | Package template implements data-driven templates for generating textual output. |
parse | Package parse builds parse trees for templates as defined by text/template and html/template. |
time | Package time provides functionality for measuring and displaying time. |
tzdata | Package tzdata provides an embedded copy of the timezone database. |
unicode | Package unicode provides data and functions to test some properties of Unicode code points. |
utf16 | Package utf16 implements encoding and decoding of UTF-16 sequences. |
utf8 | Package utf8 implements functions and constants to support text encoded in UTF-8. |
unique | The unique package provides facilities for canonicalizing ("interning") comparable values. |
unsafe | Package unsafe contains operations that step around the type safety of Go programs. |
weak | Package weak provides ways to safely reference memory weakly, that is, without preventing its reclamation. |
Other packages¶
Sub-repositories¶
These packages are part of the Go Project but outside the main Go tree. They are developed under looser compatibility requirements than the Go core. Install them with "go get".
- benchmarks — benchmarks to measure Go as it is developed.
- blog — blog.golang.org's implementation.
- build — build.golang.org's implementation.
- crypto — additional cryptography packages.
- debug — an experimental debugger for Go.
- image — additional imaging packages.
- mobile — experimental support for Go on mobile platforms.
- net — additional networking packages.
- perf — packages and tools for performance measurement, storage, and analysis.
- pkgsite — home of the pkg.go.dev website.
- review — a tool for working with Gerrit code reviews.
- sync — additional concurrency primitives.
- sys — packages for making system calls.
- text — packages for working with text.
- time — additional time packages.
- tools — godoc, goimports, gorename, and other tools.
- tour — tour.golang.org's implementation.
- exp — experimental and deprecated packages (handle with care; may change without warning).
Community¶
These services can help you find Open Source packages provided by the community.
- Pkg.go.dev - the Go package discovery site.
- Projects at the Go Wiki - a curated list of Go projects.