Przykłady rzucania Golanga

Przyklady Rzucania Golanga



Proces zmiany typu danych wartości z jednego typu na inny jest znany jako rzutowanie typu, czasami nazywany konwersją typu. Rzutowanie typów odbywa się w Go przy użyciu jawnych konwersji typów. Go obsługuje mocne pisanie. Dlatego podczas konwersji między typami musimy wyraźnie wskazać nasz cel. Sprzyja to bezpieczeństwu pisania i zmniejsza prawdopodobieństwo popełnienia błędów podczas pisania. W tym artykule przyjrzymy się rzucaniu różnych typów w Go.

Przykład 1: Podstawowy rzut typu Golang

Zacznijmy od przykładu rzutowania bezpośredniego i podstawowego w Go, ponieważ wymagamy rzutowania typu, aby zmodyfikować typ zmiennej w dowolnym miejscu.

pakiet główny
import (
'fmt'
)
funkcja główny () {
był X int = 31
I := pływak64 ( X )
fmt . Drukuj ln ( I )
}

Tutaj zaczynamy od funkcji main, deklarując zmienną o nazwie „x” typu „int” i przypisujemy jej wartość 31. Następnie deklarujemy zmienną „y” za pomocą skróconego operatora przypisania „:=”. Typ „y” jest automatycznie określany na podstawie wyrażenia po prawej stronie, które jest wynikiem konwersji „x” na „float64”. Tak więc w tym programie wartość „x” jest konwertowana na „float64” i przypisywana do „y”.







Wyniki pobrane z podstawowego rzutowania w Go są wyświetlane w następujący sposób:





Przykład 2: Niejawne rzutowanie typu Golanga

Niejawne rzutowanie typów nie jest dozwolone między różnymi typami. Go wymusza silne typowanie, co oznacza, że ​​nie możemy bezpośrednio przypisać ani użyć wartości jednego typu jako innego typu bez wyraźnej konwersji. Poniżej próbujemy wykonać niejawne rzutowanie, które generuje wyjątek przez Go:





pakiet główny
import 'fmt'
funkcja główny () {
był liczba całkowita int = 9 . 08
fmt . Drukuj ( 'Liczba całkowita to %g' , liczba całkowita )
}

Oto kod, który zaczyna się od funkcji main(), w której zmienna „integer” jest zadeklarowana z typem „int”. Wartość przypisana zmiennej „liczba całkowita” to 9,08, która jest liczbą zmiennoprzecinkową. Ponieważ próbujemy przypisać wartość zmiennoprzecinkową bezpośrednio do zmiennej całkowitej, powoduje to błąd niezgodności typów. Następnie używamy funkcji „printf” z pakietu „fmt”, aby wydrukować wartość zmiennej „integer” przy użyciu specyfikatora formatu „%g”.

Zgodnie z oczekiwaniami, niejawne rzutowanie typu jest nie do przyjęcia w Golang. Poprzednie rzutowanie typu niejawnego generuje następujący błąd:



Przykład 3: Jawne rzutowanie typu Golanga

Jawna konwersja typu pozwala nam bezpiecznie konwertować wartości między zgodnymi typami, jednocześnie jawnie określając intencję. Zapewnia to, że jesteśmy świadomi konwersji typu i pomaga zapobiegać przypadkowym błędom typu. Rozważ następujące jawne rzutowanie:

pakiet główny
import 'fmt'

funkcja główny () {
był wartość zmiennoprzecinkowa pływak32 = 6 . 75
był intVal int = int ( wartość zmiennoprzecinkowa )
fmt . Drukuj ( „Wartość zmiennoprzecinkowa to %g \N ' , wartość zmiennoprzecinkowa )
fmt . Drukuj ( „Wartość całkowita to %d” , intVal )
}

Tutaj tworzona jest zmienna „floatVal” typu „float32” i przypisywana jest jej wartość „6,75”. Następnie deklarowana jest zmienna „intVal” typu „int”. Aby przypisać wartość floatVal do intVal, używana jest konwersja typów. Aby przekształcić floatVal w wartość całkowitą, używana jest funkcja „int” z floatVal jako danymi wejściowymi. Następnie „fmt.Printf(“Float Value is %g\n”, floatVal)” drukuje wartość floatVal przy użyciu specyfikatora formatu %g, który jest odpowiedni do drukowania wartości zmiennoprzecinkowych. Podczas gdy linia kodu „fmt.Printf(„Wartość całkowita to %d”, intVal)” drukuje wartość intVal przy użyciu specyfikatora formatu %d, który jest odpowiedni do drukowania wartości całkowitych.

Następujące dane wyjściowe generują wartości zarówno dla floatVal, jak i intVal po rzutowaniu:

Przykład 4: Rzutowanie typu Golanga w celu uzyskania średniej

Następnie wykonujemy rzutowanie, aby uzyskać średnią liczbę z podanych wartości. Przejrzyjmy kod źródłowy, który znajduje się poniżej:

pakiet główny
import 'fmt'
funkcja główny () {
był całkowity int = 900
był Mój numer int = 20
był przeciętny pływak32
przeciętny = pływak32 ( całkowity ) / pływak32 ( Mój numer )
fmt . Drukuj ( „Średnia wynosi = %f \N ' , przeciętny )
}

Tutaj wstępnie deklarujemy trzy zmienne. „Total” jest zmienną całkowitą, która jest inicjowana wartością 900. „MyNumber” jest zmienną całkowitą, która jest inicjowana wartością 20. Obliczona średnia jest następnie przechowywana w zmiennej „average” float32. Następnie podaje się średnią formułę do przeprowadzenia obliczeń. Aby dzielenie było wykonywane jako dzielenie zmiennoprzecinkowe, wartości „total” i „MyNumber” są konwertowane na liczbę typu float32 przy użyciu konwersji typów. Obliczona średnia jest przypisywana do zmiennej „średnia”. Wreszcie ciąg formatu „%f\n” używany w funkcji „printf” określa, że ​​należy wydrukować wartość zmiennoprzecinkową, po której następuje znak nowej linii.

Wynikowa wartość jako średnia jest pobierana po implikacji rzutowania typu w poprzednim kodzie:

Przykład 5: Golang Int i rzutowanie typu String

Dodatkowo Go oferuje również rzutowanie między typami Int i String. Możemy to osiągnąć za pomocą funkcji pakietu strconv.

pakiet główny
import (
'fmt'
'strconv'
)
funkcja główny () {
był ul strunowy = „1999”
W , _ := strconv . przyczepa ( S )
fmt . Drukuj ln ( W )
był liczba całkowita int = 1999
doStr := strconv . utonął ( liczba całkowita )

fmt . Drukuj ln ( doStr )
}

Oto kod, który zaczyna się od deklaracji dwóch zmiennych. „Str” to zmienna łańcuchowa, która jest inicjowana wartością „1999”, a „liczba całkowita” to zmienna całkowita, która jest inicjowana wartością „1999”. Następnie funkcja „strconv.Atoi()” jest używana do konwersji ciągu „str” na wartość całkowitą. Zwracana wartość „v” reprezentuje przekonwertowaną liczbę całkowitą, a pusty identyfikator „_” służy do ignorowania potencjalnego błędu zwracanego przez Atoi().

Następnie funkcja strconv.Itoa() jest wykorzystywana do przekształcenia liczby całkowitej na wartość ciągu. Zwrócona wartość „toStr” reprezentuje przekonwertowany ciąg znaków.

Dane wyjściowe wyświetlają konwersję z ciągu „1999” na liczbę całkowitą iz powrotem na ciąg, który daje pierwotną wartość „1999”:

Przykład 6: Rzutowanie typu Golang między łańcuchem a bajtami

Co więcej, rzutowanie w Go może być również wykonywane w typach łańcuchowych i bajtowych. Poniższe kody ilustrują konwersję między łańcuchami a fragmentami bajtów:

pakiet główny
import (
'fmt'
)
funkcja główny () {
był mistr strunowy = 'No hej'
był b1 [] bajt = [] bajt ( mojaStr )
fmt . Drukuj ln ( b1 )
do Ciągu := strunowy ( b1 )
fmt . Drukuj ln ( do Ciągu )
}

Tutaj zmienne są najpierw deklarowane jako „myStr” i „b1”, które są inicjowane pewnymi wartościami. Następnie wyrażenie []byte(myStr) konwertuje ciąg „myStr” na wycinek bajtów przy użyciu konwersji typu. Przypisuje wynikowy wycinek bajtów do zmiennej „b1”. Następnie wyrażenie „string(b1)” konwertuje wycinek bajtu b1 z powrotem na ciąg przy użyciu konwersji typu. Przypisuje wynikowy ciąg znaków do zmiennej „toString”.

Dane wyjściowe pokazują konwersję między ciągiem „Hej, tam” a odpowiadającą mu reprezentacją wycinka bajtów w następujący sposób:

Przykład 7: Rzutowanie typu Golanga w celu uzyskania pierwiastka kwadratowego

Teraz wykonujemy rzutowanie w Go, aby znaleźć wyniki pierwiastka kwadratowego. Kod umieszcza się w następujący sposób:

pakiet główny
import (
'fmt'
„matematyka”
)
funkcja główny () {
był N int = 177
był SqrtN pływak64
SqrtN = matematyka . plac ( pływak64 ( N ))
fmt . Drukuj ( „Pierwiastek kwadratowy z %d to %.2f \N ' , N , SqrtN )
}

Tutaj zmienna „n” jest zadeklarowana jako int i przypisuje wartość „144”. Zmienna „SqrtN” jest zadeklarowana jako float64 i przechowuje obliczony pierwiastek kwadratowy z „n”. Następnie wdrażana jest funkcja math.Sqrt() w celu obliczenia pierwiastka kwadratowego z „n”. Ponieważ funkcja math.Sqrt() oczekuje argumentu typu float64, a wartość „n” jest konwertowana na wartość typu float64 za pomocą funkcji float64(n). Następnie łańcuch formatu „Pierwiastek kwadratowy z %d to %.2f\n” wywołuje funkcję „printf”, która określa wartość całkowitą (%d) i wartość zmiennoprzecinkową (%.2f). Specyfikator dokładności „.2” w „%.2f” zapewnia, że ​​pierwiastek kwadratowy jest drukowany z dwoma miejscami po przecinku.

Pobierane jest następujące dane wyjściowe, które wskazują pierwiastek kwadratowy z podanej wartości:

Wniosek

Rzutowanie w Go jest omówione z różnymi przykładami, z których wszystkie są wykonywalne. Należy pamiętać, że w Go rzutowanie typów jest jawne, co wymusza mocne pisanie i promuje przejrzystość i niezawodność kodu.