Data types should be very specific. Anyone using a variable should know exactly what type it is, how it looks like (if it’s a structure). While for some languages it’s common sense and really enforced, others will let you mess with a variable’s type, no matter it’s a primitive, an object, an array.
I’m going to talk about data coming from JSON, databases or other sources, which can be represented into data structures.
In a language like Go, you map data into well defined structures.
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
ID int
Age int
Name string
}
func main() {
string := `{
"id":453,
"age":26,
"name":"John Doe"
}`
input := []byte(string)
person := Person{}
err := json.Unmarshal(input, &person)
if err != nil {
panic(err)
}
fmt.Println(person) // Person struct
fmt.Println(person.ID) // integer
fmt.Println(person.Age) // integer
fmt.Println(person.Name) // string
}
You know exactly that you have an object of type Person, with integer ID, integer Age, and string Name. No need to check anything anywhere. If you mess up, you’ll know at compile time.
A dynamic typed language like PHP has a different approach. Continue reading Using data structures for types