Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Gopher 07. 03. 2018, 20:18:55

Název: Pole v Go
Přispěvatel: Gopher 07. 03. 2018, 20:18:55
Teoretický dotaz - je typ pole v Go závislostní? Překladač totiž neumožní přetypování na pole jiné délky, takže to vypadá jako Σ-typ, což ovšem jiné OO jazyky takto nemají a mě udivuje, proč se to v jinak extrémně pragmatickém Go vyskytuje.
Název: Re:Pole v Go
Přispěvatel: gujgvh 07. 03. 2018, 20:44:28
Teoretický dotaz - je typ pole v Go závislostní? Překladač totiž neumožní přetypování na pole jiné délky, takže to vypadá jako Σ-typ, což ovšem jiné OO jazyky takto nemají a mě udivuje, proč se to v jinak extrémně pragmatickém Go vyskytuje.

Jj velikost pole je soucast typu int[5] je jiny typ nez int[6], v go neni pole reseno jako
v C ze ukazatel ukazuje na nulty prvek pole.  V go ukazatel ukazuje na cele pole typu float[10]. Pole maji pevnou velikost az nad nimi jsou rezy s menitelnou velikosti.
Název: Re:Pole v Go
Přispěvatel: CoffeeMan 07. 03. 2018, 21:09:28
Už jsem se lekl, že někdo hraje hru Go. ;D

https://cs.wikipedia.org/wiki/Go_(deskov%C3%A1_hra)
Název: Re:Pole v Go
Přispěvatel: Jester 07. 03. 2018, 21:21:02
Teoretický dotaz - je typ pole v Go závislostní? Překladač totiž neumožní přetypování na pole jiné délky, takže to vypadá jako Σ-typ, což ovšem jiné OO jazyky takto nemají a mě udivuje, proč se to v jinak extrémně pragmatickém Go vyskytuje.

Jj velikost pole je soucast typu int[5] je jiny typ nez int[6], v go neni pole reseno jako
v C ze ukazatel ukazuje na nulty prvek pole.  V go ukazatel ukazuje na cele pole typu float[10]. Pole maji pevnou velikost az nad nimi jsou rezy s menitelnou velikosti.
Formálně jde o závislostní typ, ale překladač neumožňuje s parametrem typového konstruktoru pracovat, takže vyšší bezpečnost se nekoná.
Název: Re:Pole v Go
Přispěvatel: Jester 07. 03. 2018, 22:34:02
P.S. Jinak pole v Go jsou de facto hodnotové typy. Když mám céčkový ukazatel, musím ho přetypovat na *[N]typ, kde N je nějaké velké číslo (ideálně to největší přípustné, což ale závisí na architektuře). Z tohoto ukazatele pak jde udělat řez, kde už je velikost pole záležitostí doby běhu, ne překladu. Ono to je v Go vlastně vymyšlené velmi chytře a překladač používá pole s pevnou velikostí i skrytě právě u řezů, například při přidávání prvků, když je třeba alokovat větší pole.
Název: Re:Pole v Go
Přispěvatel: Youda 08. 03. 2018, 09:26:59
Jenom pro doplneni, golang mai neco jako collections pro chude.

https://golang.org/pkg/container/