Contoh Pengecoran Golang

Contoh Pengecoran Golang



Proses mengubah tipe data nilai dari satu tipe ke tipe lainnya dikenal sebagai pengecoran tipe, terkadang dikenal sebagai konversi tipe. Pengecoran tipe dilakukan di Go menggunakan konversi tipe eksplisit. Go mendukung pengetikan yang kuat. Jadi, saat mengonversi antar tipe, kita harus secara eksplisit menunjukkan tujuan kita. Ini meningkatkan keamanan jenis dan mengurangi kemungkinan kesalahan pengetikan. Dalam artikel ini, kita akan membahas tentang casting dengan tipe yang berbeda di Go.

Contoh 1: Pengecoran Tipe Dasar Golang

Mari kita mulai dengan contoh casting langsung dan dasar di Go karena kita memerlukan typecasting untuk mengubah tipe variabel, di mana saja.

kemasan utama
impor (
'fmt'
)
fungsi utama () {
dulu X int = 31
Dan := float64 ( X )
fmt . Println ( Dan )
}

Di sini, kita mulai dengan fungsi utama dengan mendeklarasikan variabel bernama “x” bertipe “int” dan menetapkannya dengan nilai 31. Kemudian, variabel “y” dideklarasikan menggunakan operator penugasan singkatan “:=”. Jenis 'y' secara otomatis ditentukan dari ekspresi di sisi kanan yang merupakan hasil konversi 'x' menjadi 'float64'. Jadi, dalam program ini, nilai “x” diubah menjadi “float64” dan ditetapkan ke “y”.







Hasil yang diambil dari casting dasar di Go ditampilkan sebagai berikut:





Contoh 2: Pengecoran Tipe Implisit Golang

Pengecoran tipe implisit tidak diperbolehkan di antara tipe yang berbeda. Go memberlakukan pengetikan yang kuat yang berarti bahwa kita tidak dapat secara langsung menetapkan atau menggunakan nilai dari satu jenis sebagai jenis lainnya tanpa konversi eksplisit. Berikut ini, kami mencoba melakukan casting implisit yang menghasilkan pengecualian oleh Go:





kemasan utama
impor 'fmt'
fungsi utama () {
dulu bilangan bulat int = 9 . 08
fmt . Cetakf ( 'Bilangan bulat adalah %g' , bilangan bulat )
}

Berikut kode yang dimulai dengan fungsi main() di mana variabel 'integer' dideklarasikan dengan tipe 'int'. Nilai yang diberikan ke variabel 'bilangan bulat' adalah 9,08 yang merupakan angka titik-mengambang. Karena kami berusaha untuk menetapkan nilai floating-point langsung ke variabel integer, itu menghasilkan kesalahan ketidakcocokan tipe. Kemudian, kita menggunakan fungsi “printf” dari paket “fmt” untuk mencetak nilai variabel “integer” menggunakan penentu format “%g”.

Seperti yang diharapkan, casting tipe implisit tidak dapat diterima di Golang. Pengecoran tipe implisit sebelumnya menghasilkan kesalahan berikut:



Contoh 3: Pengecoran Tipe Eksplisit Golang

Konversi tipe eksplisit memungkinkan kita untuk dengan aman mengonversi nilai antara tipe yang kompatibel sambil secara eksplisit menyatakan niat. Ini memastikan bahwa kami mengetahui konversi jenis dan membantu mencegah kesalahan jenis yang tidak disengaja. Pertimbangkan casting eksplisit berikut:

kemasan utama
impor 'fmt'

fungsi utama () {
dulu floatVal float32 = 6 . 75
dulu intVal int = int ( floatVal )
fmt . Cetakf ( 'Nilai Float adalah %g \N ' , floatVal )
fmt . Cetakf ( 'Nilai Bilangan Bulat adalah %d' , intVal )
}

Di sini, variabel 'floatVal' dibuat dengan tipe 'float32', dan diberi nilai '6.75'. Kemudian, variabel “intVal” dideklarasikan dengan tipe “int”. Untuk menetapkan nilai floatVal ke intVal, konversi tipe digunakan. Untuk mengubah floatVal menjadi nilai integer, fungsi “int” digunakan dengan floatVal sebagai input. Setelah itu, “fmt.Printf(“Float Value is %g\n”, floatVal)” mencetak nilai floatVal menggunakan penentu format %g yang cocok untuk mencetak nilai floating-point. Sementara baris kode “fmt.Printf(“Integer Value is %d”, intVal)” mencetak nilai intVal menggunakan penentu format %d yang cocok untuk mencetak nilai integer.

Output berikut menghasilkan nilai untuk floatVal dan intVal setelah casting:

Contoh 4: Casting Jenis Golang untuk Mendapatkan Rata-Rata

Selanjutnya, kami melakukan casting untuk mendapatkan angka rata-rata dari nilai yang diberikan. Mari kita telusuri kode sumber yang disediakan berikut ini:

kemasan utama
impor 'fmt'
fungsi utama () {
dulu total int = 900
dulu Nomor saya int = dua puluh
dulu rata-rata float32
rata-rata = float32 ( total ) / float32 ( Nomor saya )
fmt . Cetakf ( 'Rata-rata = %f \N ' , rata-rata )
}

Di sini, kami awalnya mendeklarasikan tiga variabel. 'Total' adalah variabel integer yang diinisialisasi dengan nilai 900. 'MyNumber' adalah variabel integer yang diinisialisasi dengan nilai 20. Rata-rata yang dihitung kemudian disimpan dalam variabel 'rata-rata' float32. Formula rata-rata kemudian diberikan untuk melakukan perhitungan. Untuk memastikan bahwa pembagian dilakukan sebagai pembagian floating-point, nilai 'total' dan 'MyNumber' dikonversi menjadi float32 menggunakan konversi tipe. Rata-rata yang dihitung ditugaskan ke variabel 'rata-rata'. Terakhir, format string “%f\n” yang digunakan dalam fungsi “printf” menentukan bahwa nilai float harus dicetak, diikuti dengan karakter baris baru.

Nilai yang dihasilkan sebagai rata-rata diambil setelah menyiratkan pengecoran tipe dalam kode sebelumnya:

Contoh 5: Golang Int dan String Type Casting

Selain itu, Go juga menawarkan transmisi antara tipe Int dan String. Kita dapat melakukannya dengan menggunakan fungsi dari paket strconv.

kemasan utama
impor (
'fmt'
'strconv'
)
fungsi utama () {
dulu str rangkaian = '1999'
di dalam , _ := strconv . cuplikan ( S )
fmt . Println ( di dalam )
dulu bilangan bulat int = 1999
keStr := strconv . tenggelam ( bilangan bulat )

fmt . Println ( keStr )
}

Berikut kode yang diawali dengan deklarasi dua variabel. The 'str' ​​adalah variabel string yang diinisialisasi dengan nilai '1999' dan 'integer' adalah variabel integer yang diinisialisasi dengan nilai '1999'. Setelah itu, fungsi “strconv.Atoi()” digunakan untuk mengubah string “str” menjadi nilai integer. Nilai yang dikembalikan dari 'v' mewakili bilangan bulat yang dikonversi, dan pengidentifikasi '_' kosong digunakan untuk mengabaikan potensi kesalahan yang dikembalikan oleh Atoi().

Selanjutnya, fungsi strconv.Itoa() digunakan untuk mengubah bilangan bulat menjadi nilai string. Nilai yang dikembalikan yaitu 'toStr' mewakili string yang dikonversi.

Keluaran menampilkan konversi dari string '1999' ke bilangan bulat dan kembali ke string yang menghasilkan nilai asli '1999':

Contoh 6: Pengecoran Tipe Golang Antara String dan Byte

Selain itu, casting di Go juga dapat dilakukan dalam tipe string dan byte. Kode berikut menunjukkan konversi antara string dan irisan byte:

kemasan utama
impor (
'fmt'
)
fungsi utama () {
dulu mystr rangkaian = 'Hai disana'
dulu b1 [] byte = [] byte ( myStr )
fmt . Println ( b1 )
keString := rangkaian ( b1 )
fmt . Println ( keString )
}

Di sini, variabel pertama kali dideklarasikan sebagai 'myStr' dan 'b1' yang diinisialisasi dengan nilai tertentu. Kemudian, ekspresi []byte(myStr) mengonversi string “myStr” menjadi irisan byte menggunakan konversi tipe. Ini menetapkan potongan byte yang dihasilkan ke variabel 'b1'. Setelah itu, ekspresi “string(b1)” mengubah irisan byte b1 kembali menjadi string menggunakan konversi tipe. Ini menetapkan string yang dihasilkan ke variabel 'toString'.

Output menunjukkan konversi antara string 'Hey There' dan representasi potongan byte yang sesuai sebagai berikut:

Contoh 7: Casting Jenis Golang untuk Mendapatkan Akar Kuadrat

Sekarang, kita melakukan casting di Go untuk menemukan hasil akar kuadrat. Kode ditempatkan sebagai berikut:

kemasan utama
impor (
'fmt'
'matematika'
)
fungsi utama () {
dulu N int = 177
dulu SqrtN float64
SqrtN = matematika . Persegi ( float64 ( N ))
fmt . Cetakf ( 'Akar kuadrat dari %d adalah %.2f \N ' , N , SqrtN )
}

Di sini, variabel 'n' dideklarasikan sebagai int dan memberikan nilai '144'. Variabel 'SqrtN' dideklarasikan sebagai float64 dan menyimpan akar kuadrat yang dihitung dari 'n'. Kemudian, fungsi math.Sqrt() diterapkan untuk menghitung akar kuadrat dari “n”. Karena math.Sqrt() mengharapkan argumen float64, dan nilai “n” dikonversi menjadi float64 menggunakan float64(n). Setelah itu, string format “Square root of %d is %.2f\n” memanggil fungsi “printf” yang menentukan nilai integer (%d) dan nilai floating-point (%.2f). Penspesifikasi presisi '.2' dalam '%.2f' memastikan bahwa akar kuadrat dicetak dengan dua tempat desimal.

Output berikut diambil yang menunjukkan akar kuadrat dari nilai yang diberikan:

Kesimpulan

Casting di Go dibahas dengan contoh berbeda yang semuanya dapat dieksekusi. Perlu diingat bahwa di Go, typecasting bersifat eksplisit yang menerapkan pengetikan yang kuat dan mempromosikan kejelasan dan keandalan kode.