Cześć
Znalazłem taki zapis funkcji z którym nie miałem wcześniej doczynienia:
func (mi MyInt) String() string {
return fmt.Sprint("*", int(mi), "*")
}
Gdzie tutaj jest nazwa funkcji? Jak to się czyta?
Wątek przeniesiony 2021-09-16 09:49 z Inne języki programowania przez cerrato.
Cześć
Znalazłem taki zapis funkcji z którym nie miałem wcześniej doczynienia:
func (mi MyInt) String() string {
return fmt.Sprint("*", int(mi), "*")
}
Gdzie tutaj jest nazwa funkcji? Jak to się czyta?
func // keyword
(mi MyInt) // typ na którym dana funkcja operuje. w go nie ma klas, więc można pisać funkcje "zbindowane" do struktury - tutaj właśnie podajesz jej typ i definiujesz sposób przekazywania do funkcji (w tym przypadku przez wartość)
String() // nazwa funkcji i parametry (w tym przypadku brak parametrów)
string // zwracany typ {
return fmt.Sprint("*", int(mi), "*")
}
Polecam zrobić A Tour of Go, fajny interaktywny tutorial, który porusza wiele (wszystkie?) aspektów języka. Szczególnie w kontekście twojego pytania zobacz to
Funkcja nazywa się String
i zwraca typ string. Wywoływana jest dla obiektu typu MyInt.
package main
import (
"fmt"
)
type MyInt int
func (mi MyInt) xxxxxxxxxxx() string {
return fmt.Sprint("*", int(mi), "*")
}
func main() {
i := MyInt(10)
fmt.Println(i.xxxxxxxxxxx())
}
To typowa praktyka, ze względu na obecność interfejsu Stringer
: https://tour.golang.org/methods/17