Omlouvám se, že pedanticky opravuji nepřesnosti :), ale drobná připomínka. V kapitole 6, ukázka deklarace a inicializace pole současně je v druhém případě inicializován řez (slice) a ne pole. V daném příkladě v tom není rozdíl, ale v realitě se rozdíly mohou projevit a je potřeba s tím počítat. Správný zápis druhé části příkladu měl být:
var users2 = [...]User{
User{
id: 1,
name: "Pepek",
surname: "Vyskoč"},
User{
id: 2,
name: "Pepek",
surname: "Vyskoč"},
User{
id: 3,
name: "Josef",
surname: "Vyskočil"},
}
fmt.Println(users2)
to znamená [...]Users místo []Users. Místo tří teček kompilátor dosadí počet prvků pole.
K pointrům bych jen dodal, že existuje možnost pracovat s nimi stejně, jako v jazyce C přes balík unsafe. Díky němu lze obejít typovou kontrolu, což může být, jak už z názvu vyplývá, nebzezpečné.