Sobes.tech
Senior

Tell me about the empty struct{} structure. Use cases, how much memory does it occupy?

sobes.tech AI

Answer from AI

In Go, an empty struct struct{} is a struct with no fields.

Features:

  • Occupies 0 bytes of memory.
  • Used to indicate the absence of data, but with the ability to have a type.

Use cases:

  • Sets: you can use map[KeyType]struct{} to store unique keys without additional memory overhead.
  • Signals and synchronization: a channel of type chan struct{} is often used for notifications without passing data.
  • Empty values: when you need to pass or return a type but without content.

Example of using a set:

set := make(map[string]struct{})
set["apple"] = struct{}{}
if _, exists := set["apple"]; exists {
    fmt.Println("apple is in the set")
}

Thus, struct{} is an efficient way to indicate presence without storing data.

Tell me about the empty struct{} structure. Use… - sobes.tech