Krótka odpowiedź jest taka, że Go jest następcą C, a standardowa biblioteka matematyczna C jest również zdefiniowana prawie wyłącznie w kategoriach wartości zmiennoprzecinkowych o pojedynczej i podwójnej precyzji.
Dłuższą odpowiedzią jest to, że w języku o typie statycznym bez polimorfizmu lub przeciążania funkcji, takim jak Go (lub C), musisz zdecydować się na typ, aby funkcja mogła przyjąć i powrócić z wyprzedzeniem, a kiedy masz do czynienia z określonych typów w bibliotece matematycznej, na liczbach zmiennoprzecinkowych jest o wiele więcej interesujących operacji niż na liczbach całkowitych. Aby wybrać kilka przykładów
pierwiastek kwadratowy lub n-ty liczby całkowitej lub liczby zmiennoprzecinkowej zwykle nie jest reprezentowany jako liczba całkowita
bardzo niewiele interesujących wartości funkcji transcendentalnych można przedstawić jako liczby całkowite
podział wartości zmiennoprzecinkowych wymaga mniej zaokrąglania niż podział liczb całkowitych
Zauważ, że nie jest to tak uciążliwe, jak mogłoby się wydawać, jeśli twoje wartości wejściowe są liczbami całkowitymi - wartość całkowitą można przekonwertować na wartość zmiennoprzecinkową za pomocą prostego rzutowania czcionek i przede wszystkim dokładnie.
Tak właśnie dzieje się w przypadku języków takich jak Go lub C. Inne języki mają inne opcje:
Język z dynamicznym typowaniem może zapewniać funkcje bibliotek matematycznych, które przyjmują lub zwracają wiele typów w zależności od tego, do czego są wywoływane lub od tego, czy zwracana wartość jest reprezentowana jako liczba całkowita.
Język z przeciążeniem funkcji może zapewniać wiele wersji tej samej funkcji, w zależności od przekazywanych typów (ściśle, są to wiele funkcji o tej samej nazwie, w odróżnieniu od powyższego przypadku dynamicznie typowanego)
Język z polimorfizmem typu (taki jak języki obiektowe z dziedziczeniem) może zdefiniować nadklasę „Number” z podklasami zarówno dla liczb całkowitych, jak i liczb zmiennoprzecinkowych, a następnie zdefiniować funkcje matematyczne w kategoriach tej klasy Number. Podejście to cechuje duża elastyczność dynamicznego podejścia językowego, przy jednoczesnym zachowaniu dużej rygorystyczności podejścia statycznego lub przeciążania funkcji.
Go nie ma jednak żadnej z tych funkcji.