In the previous chapter, we used the data type string to store `Hello, World`

. Data types categorize a set of related values, describe the operations that can be done on them, and define the way they are stored. Because types can be a difficult concept to grasp, we will look at them from a couple different perspectives before we see how they are implemented in Go.

Philosophers sometimes make a distinction between types and tokens. For example, suppose you have a dog named Max. *Max* is the token (a particular instance or member) and *dog* is the type (the general concept). *Dog* or *dogness* describes a set of properties that all dogs have in common. Although oversimplistic, we might reason like this: all dogs have four legs, Max is a dog, therefore Max has four legs. Types in programming languages work in a similar way: all strings have a length, *x* is a string, therefore *x* has a length.

In mathematics, we often talk about sets. For example, ℝ (the set of all real numbers) or ℕ (the set of all natural numbers). Each member of these sets shares properties with all the other members of the set. For instance, all natural numbers are associative: “for all natural numbers *a*, *b*, and *c*, *a* + (*b* + *c*) = (*a* + *b*) + *c* and *a* × (*b* × *c*) = (*a* × *b*) × *c*.” In this way, sets are similar to types in programming languages, because all the values of a particular type share certain properties.

Go is a statically typed programming language. This means that variables always have a specific type and ...

Start Free Trial

No credit card required