Dnešní bleskovka - sady (množiny) v Golang

Publikováno 01-10-2017 08:48:24

Dnes opět jen telegraficky. Go nepodporuje sady (množiny) a tak tu máme drobnou obezličku, jak si takovou sadu vytvořit. Využijeme toho, že mapy mají unikátní klíče a jsou netříděné. Že to zní povědomě? Ano! Vždyť to je přece množina.

Takže než abychom si mazali ruce nějakým bastlením kódu si uděláme např. toto:

package main

import (
	"fmt"
)

func main() {
	množinaIntů := map[int]struct{}{}
	množinaIntů[2] = struct{}{}
	množinaIntů[1] = struct{}{}
	množinaIntů[3] = struct{}{}
	množinaIntů[4] = struct{}{}
	množinaIntů[1] = struct{}{}
	// jen si mapu prosvištíme, ať víme co v ní je
        for key := range množinaIntů {
		fmt.Println("Položka množiny:", key)
	}
	// zjištění jestli množina obsahuje položku
	if _, ok := množinaIntů[1]; ok {
		fmt.Println("Množina obsahuje položku 1.")
	}
}

Padl tu dotaz, proč je použit typ map[int]struct{}. Tedy mapu s klíčem int a položkami typu prázdná struktura. Důvod je prostý, prázdná struktura zabírá (logicky) v paměti 0 bajtů.

To je pro dnešek vše :-)

comments powered by Disqus