Pole v Go

Gopher

Pole v Go
« kdy: 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.


gujgvh

Re:Pole v Go
« Odpověď #1 kdy: 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.

CoffeeMan

Re:Pole v Go
« Odpověď #2 kdy: 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)

Jester

Re:Pole v Go
« Odpověď #3 kdy: 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á.

Jester

Re:Pole v Go
« Odpověď #4 kdy: 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.


Youda

Re:Pole v Go
« Odpověď #5 kdy: 08. 03. 2018, 09:26:59 »
Jenom pro doplneni, golang mai neco jako collections pro chude.

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