Empty interface
any is a type or type constraint that permits values of arbitrary concrete types without requiring a more specific interface or representation.
Go in Practice, Second Edition
any is a predeclared Go type alias for the empty interface type interface{}, allowing values of any type.
- How it is used
- Holds values of varied types in slices and JSON data whose structure is not known ahead of time.
- How deep it goes
- Defines the zero-method interface and works through JSON decoding and type inspection, while identifying its lack of type constraints.
- Examples
- Shows an integer-filled `[]interface{}` shuffle slice and JSON decoded into values accessed through `map[string]interface{}`.
- What you can do after
- Apply it via `encoding/json` to decode unknown JSON structures and inspect values with type assertions or switches.
Read how Go in Practice, Second Edition explains empty interface →
Build and Orchestrator in Go (From Scratch)
An empty interface is a Go interface type that imposes no method requirements and can hold a value of any type.
- How it is used
- Decouples a task manager from a concrete map or datastore by allowing Store methods to exchange values of different types.
- How deep it goes
- Explains flexible method signatures, concrete type assertions, comma-ok checks, and conversions, but stops short of broader type-system treatment.
- Examples
- Uses task.Task and task.TaskEvent values, Store methods, an in-memory map, and manager conversions from interface{}.
- What you can do after
- Apply it via Go type assertions to implement flexible Store boundaries and safely recover concrete task values.
Read how Build and Orchestrator in Go (From Scratch) explains empty interface →
100 Go Mistakes and How to Avoid Them
any is a predeclared Go alias for interface{} that can hold a value of any type.
- How it is used
- Guides API design by limiting `any` to genuinely type-agnostic operations and favoring expressive concrete signatures elsewhere.
- How deep it goes
- Explains the alias, loss of type information, API trade-offs, explicit alternatives, and JSON numeric conversion, but not interface internals.
- Examples
- Uses heterogeneous assignments, an unexpressive Store API, explicit Store methods, `json.Marshal`, SQL query arguments, and JSON maps.
- What you can do after
- Evaluate API signatures, replace unnecessary `any` with explicit types, and diagnose JSON map values before making type assumptions.
Read how 100 Go Mistakes and How to Avoid Them explains empty interface →
Learn Go with Pocket-Sized Projects
any is Go's predeclared constraint that permits any type as a generic type argument and is equivalent to interface{}.
- How it is used
- Supports reusable generic functions, structures, and variables when the implementation accepts values of any type.
- How deep it goes
- Defines any as an unconstrained type requirement and demonstrates explicit arguments, inference, and compilation of concrete instantiations.
- Examples
- Uses prettyPrint with float64 and string values, showing both explicit type arguments and compiler-inferred type arguments.
- What you can do after
- Build it from scratch: write generic Go functions that accept multiple concrete types and invoke them with explicit or inferred types.
Read how Learn Go with Pocket-Sized Projects explains empty interface →
Related concepts
- contractkind of · An API contract is a specification of the operations, data, and behavioral expectations that govern interactions between software components.
- fmt.Printlnused by · fmt.Println is a Go standard-library function that writes its arguments separated by spaces and followed by a newline.
- Mapused by · A map is an associative data structure that stores key-value pairs and supports retrieving values by key.
- genericsalternative to · Generics are programming-language constructs that parameterize or generalize types and operations so they can apply to multiple concrete types or input forms.
- type constraintkind of · A type constraint is a rule that restricts admissible types or type arguments by requiring specified relationships, structures, properties, or supported operations.
- natural language interfacekind of · A natural language interface enables interaction with a system through human-language text or speech.
These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.



