Wpis z mikrobloga

@sokytsinolop:
// int is a signed integer type that is at least 32 bits in size. It is a
// distinct type, however, and not an alias for, say, int32.
type int int

Int będzie miał 64bit na 64 bitowej architekturze. Na 32bit alokowanie 2GB slice jest bez sensu
@sokytsinolop: chodzi mi o praktycznie zastosowania: jak ktoś potrzebuje więcej niż 2GB w jednej tablicy to prawdopodobnie powinien użyć 64 bitowej architektury. Z ciekawostek to alokacja []byte o rozmiarze 2,147,483,647.0 + 1 zwraca:

len argument too large in make([]byte)
Go to jednak nie jest język to wyciągania siódmych potów z sprzętu, więc można to olać
via Wykop Mobilny (Android)
  • 0
@Saly: Moim zdaniem nie ma tu nic do olewania. Z tego, co zrozumiałem czytając sobie src golanga, slice w najlepszym wypadku może mieć tyle elementów, ile jest możliwych adresów do zaadresowania na danej architekturze dla konkretnego typu programu. W chyba prawie wszystkich przypadkach ilość ta odpowiada temu, ile bajtów ma int.
Dla przykładu, na amd64 w 64 bitowej binarce można zaadresować tyle adresów, ile zmieści się na 64 bitach. Oznacza to,
via Wykop Mobilny (Android)
  • 1
@MiXereg: w amd64 nie da się używać całej zaadresowanej pamięci, bo procesory po prostu tego nie wspierają. ZGC z Javy wykorzystuje ten fakt kodując pewne metadane w nieużywanych bitach. To co napisałeś jest prawdą: teoretyczne golangowy slice mógłby mieć więcej elementów niż 2^31, ale przez to, że inny int jest signed to się nie da. To nie zmienia faktu, że jest to mniej niż 2^32, czyli wszystko się zgadza