Rumah pembangunan bahagian belakang Golang penukaran jenis golang ok

penukaran jenis golang ok

May 10, 2023 pm 12:22 PM

Bahasa Go (Golang) ialah bahasa pengaturcaraan sumber terbuka yang dipengaruhi oleh bahasa seperti C, Java dan Python Ia dibangunkan oleh Google dan digunakan untuk mencipta perisian yang cekap dan boleh dipercayai. Sesuatu program berkait rapat dengan bahasa di mana ia ditulis Seperti bahasa yang mengekspresikan emosi dan pemikiran, bahasa pengaturcaraan juga mempunyai ciri-ciri tersendiri. Penukaran jenis ialah konsep yang sangat penting dalam bahasa Go, kerana penukaran jenis digunakan dalam banyak situasi Artikel ini akan memperkenalkan pengetahuan yang berkaitan tentang penukaran jenis Golang.

1. Gambaran keseluruhan penukaran jenis

Penukaran jenis ialah proses menukar nilai satu jenis data kepada nilai jenis data yang lain. Dalam bahasa Go, jenis data dibahagikan kepada jenis data asas dan jenis komposit. Jenis data asas termasuk int, float, string, bool dan jenis lain. Jenis komposit termasuk tatasusunan, kepingan, kamus, struktur, antara muka dan fungsi. Dalam bahasa Go, nilai antara jenis yang berbeza tidak boleh dikendalikan dan dibandingkan secara langsung. Oleh itu, adalah perlu untuk menaip-menukar nilai antara jenis yang berbeza. Golang menyokong penukaran integer yang ditandatangani, integer tidak ditandatangani, nombor titik terapung, Boolean, rentetan dan jenis lain Sintaks penukaran jenis ialah: T(x), dengan T mewakili jenis yang akan ditukar dan x mewakili nilai yang akan ditukar. .

2. Penukaran jenis data asas

1 Penukaran jenis integer

Dalam bahasa Go, jenis integer termasuk integer yang ditandatangani dan integer yang tidak ditandatangani ialah int8 , int16, int32, int64, uint8, uint16, uint32 dan uint64. Antaranya, int8 dan uint8 dipanggil jenis bait, int16 dan uint16 dipanggil jenis integer pendek, int32 dan uint32 dipanggil jenis integer panjang, dan int64 dan uint64 dipanggil jenis integer panjang.

Anda perlu memberi perhatian kepada dua perkara berikut semasa menukar jenis integer:

  • Jika julat nilai melebihi julat nilai jenis yang hendak ditukar semasa penukaran, ia akan melimpah, mengakibatkan dalam keputusan yang tidak tepat. Contohnya, menukar nilai yang lebih besar daripada julat int8 kepada jenis int8 akan menghasilkan nilai yang tidak tepat dalam julat [-128, 127]. Masalah limpahan dengan jenis integer perlu dielakkan.
  • Hanya penukaran daripada jenis yang sama atau daripada jenis ketepatan rendah kepada jenis ketepatan tinggi adalah selamat. Sebagai contoh, menukar daripada int8 kepada int16 adalah selamat, tetapi menukar daripada int16 kepada int8 adalah tidak selamat kerana sesetengah data mungkin dipintas apabila menukar kepada int8, mengakibatkan keputusan yang tidak tepat.

Berikut ialah beberapa contoh penukaran jenis integer:

package main

import "fmt"

func main() {
    var a int32 = 100
    var b int64 = int64(a)   // int32转换成int64
    var c int8 = int8(a)     // int32转换成int8,可能溢出
    var d uint16 = uint16(a) // int32转换成uint16
    fmt.Println(b, c, d)
}
Salin selepas log masuk

Hasil output ialah:

100 100 100
Salin selepas log masuk

2. Penukaran jenis titik terapung

dalam Go Dalam bahasa, jenis nombor terapung termasuk float32 dan float64, dan satu-satunya jenis nombor titik terapung yang menyokong penukaran ialah float32 dan float64. Terdapat dua perkara yang perlu diberi perhatian apabila menukar jenis nombor titik terapung:

  • Jika julat nilai terlalu besar atau terlalu kecil semasa penukaran, limpahan mungkin berlaku.
  • hanya boleh ditukar daripada jenis ketepatan rendah kepada jenis ketepatan tinggi Penukaran daripada jenis ketepatan tinggi kepada jenis ketepatan rendah boleh mengakibatkan kehilangan ketepatan.

Berikut ialah contoh penukaran jenis titik terapung:

package main

import "fmt"

func main() {
    var a float32 = 3.1415926
    var b float64 = float64(a) // float32转换成float64
    fmt.Println(b)
}
Salin selepas log masuk

Hasil output ialah:

3.1415927410125732
Salin selepas log masuk

3 dalam Go Dalam bahasa, jenis Boolean hanya mempunyai dua nilai: benar dan salah, dan satu-satunya jenis yang menyokong penukaran ialah jenis int dan rentetan. Apabila menukar nilai Boolean kepada int, benar ditukar kepada 1 dan palsu ditukar kepada 0. Apabila menukar nilai Boolean kepada rentetan, benar ditukar kepada "benar" dan palsu ditukar kepada "salah".

Berikut ialah contoh penukaran jenis Boolean:

package main

import "fmt"

func main() {
    var a bool = true
    var b int = int(a)     // true转换成int,值为1
    var c string = string(a) // true转换成字符串,值为"true"
    fmt.Println(b, c)
}
Salin selepas log masuk

Hasil output ialah:

1 true
Salin selepas log masuk

4 Penukaran jenis rentetan

Dalam bahasa Go, Rentetan ialah tatasusunan (tidak berubah) yang terdiri daripada jujukan aksara dan satu-satunya jenis yang menyokong penukaran ialah jenis primitif. Penukaran rentetan boleh dicapai melalui pakej strconv. Apabila menukar integer kepada rentetan, anda boleh menggunakan fungsi strconv.Itoa() dan apabila menukar nombor titik terapung kepada rentetan, anda boleh menggunakan fungsi strconv.FormatFloat().

Berikut ialah contoh penukaran jenis rentetan:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    var a int = 100
    var b string = strconv.Itoa(a) // 将整数转换成字符串
    var c float64 = 3.1415926
    var d string = strconv.FormatFloat(c, 'f', 6, 64) // 将浮点数转换成字符串,保留6位小数
    fmt.Println(b, d)
}
Salin selepas log masuk

Hasil output ialah:

100 3.141593
Salin selepas log masuk

3. Penukaran jenis komposit

1 penukaran

Dalam bahasa Go, tatasusunan ialah urutan panjang tetap yang terdiri daripada unsur-unsur jenis yang sama. Nilai boleh diberikan secara langsung antara tatasusunan, tetapi perlu diperhatikan bahawa saiz dan jenis tatasusunan mestilah sama, jika tidak ralat penyusunan akan berlaku.

Berikut ialah contoh penukaran jenis tatasusunan:

package main

import "fmt"

func main() {
    var a [3]int = [3]int{1, 2, 3}
    var b [3]int = a // 数组之间可以直接赋值
    fmt.Println(b)
}
Salin selepas log masuk

Hasil output ialah:

[1 2 3]
Salin selepas log masuk

2. Penukaran jenis kepingan

Dalam bahasa Go, slice Ia adalah struktur yang mengandungi penunjuk kepada tatasusunan, panjang dan kapasiti kepingan, dan merupakan jujukan panjang berubah-ubah. Nilai boleh diberikan secara langsung di antara kepingan, tetapi perlu diperhatikan bahawa jenis elemen kepingan mestilah sama.

Berikut ialah contoh penukaran jenis kepingan:

package main

import "fmt"

func main() {
    a := []int{1, 2, 3, 4}
    b := a // 切片之间可以直接赋值
    fmt.Println(b)
}
Salin selepas log masuk

Hasil output ialah:

[1 2 3 4]
Salin selepas log masuk

3 penukaran jenis kamus

Dalam bahasa Go, kamus Merupakan koleksi pasangan kunci-nilai. Nilai boleh diberikan secara langsung antara kamus, tetapi perlu diperhatikan bahawa jenis kunci dan nilai kamus mestilah sama.

Berikut ialah contoh penukaran jenis kamus:

package main

import "fmt"

func main() {
    a := map[string]int{"apple": 1, "banana": 2}
    b := a // 字典之间可以直接赋值
    fmt.Println(b)
}
Salin selepas log masuk

Hasil output ialah:

map[apple:1 banana:2]
Salin selepas log masuk

4. Ringkasan

Dalam bahasa Go, penukaran jenis ialah konsep yang sangat penting. Penukaran jenis boleh menukar nilai antara jenis yang berbeza untuk memenuhi keperluan program. Walau bagaimanapun, perlu diingatkan bahawa apabila melakukan penukaran jenis, adalah perlu untuk mengelakkan limpahan julat jenis data dan masalah kehilangan ketepatan, dan pada masa yang sama, adalah perlu untuk memastikan bahawa jenis yang ditukar adalah serasi dengan jenis sebelum penukaran. Penukaran jenis digunakan antara jenis data asas dan jenis data komposit Menguasai pengetahuan berkaitan penukaran jenis adalah sangat penting untuk pengaturcaraan Golang.

Atas ialah kandungan terperinci penukaran jenis golang ok. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah? GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah? Mar 03, 2025 pm 05:17 PM

Artikel ini menerangkan mekanisme import pakej Go: Dinamakan import (mis., Import & quot; fmt & quot;) dan import kosong (mis., Import _ & quot; fmt & quot;). Dinamakan import membuat kandungan pakej boleh diakses, sementara import kosong hanya melaksanakan t

Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego? Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego? Mar 03, 2025 pm 05:22 PM

Artikel ini menerangkan fungsi Newflash () Beego untuk pemindahan data antara halaman dalam aplikasi web. Ia memberi tumpuan kepada menggunakan NewFlash () untuk memaparkan mesej sementara (kejayaan, kesilapan, amaran) antara pengawal, memanfaatkan mekanisme sesi. Limita

Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go? Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go? Mar 03, 2025 pm 05:18 PM

Artikel ini memperincikan penukaran yang cekap hasil pertanyaan MySQL ke dalam kepingan struct go. Ia menekankan menggunakan kaedah imbasan pangkalan data/SQL untuk prestasi optimum, mengelakkan parsing manual. Amalan terbaik untuk pemetaan medan struct menggunakan tag db dan robus

Bagaimana saya menulis objek dan stub untuk ujian di GO? Bagaimana saya menulis objek dan stub untuk ujian di GO? Mar 10, 2025 pm 05:38 PM

Artikel ini menunjukkan penciptaan dan stub di GO untuk ujian unit. Ia menekankan penggunaan antara muka, menyediakan contoh pelaksanaan mengejek, dan membincangkan amalan terbaik seperti menjaga mocks fokus dan menggunakan perpustakaan penegasan. Articl

Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO? Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO? Mar 10, 2025 pm 03:20 PM

Artikel ini meneroka kekangan jenis adat Go untuk generik. Ia memperincikan bagaimana antara muka menentukan keperluan jenis minimum untuk fungsi generik, meningkatkan keselamatan jenis dan kebolehgunaan semula kod. Artikel ini juga membincangkan batasan dan amalan terbaik

Bagaimana cara menulis fail dalam bahasa Go dengan mudah? Bagaimana cara menulis fail dalam bahasa Go dengan mudah? Mar 03, 2025 pm 05:15 PM

Artikel ini memperincikan penulisan fail yang cekap di GO, membandingkan OS.WriteFile (sesuai untuk fail kecil) dengan os.openfile dan buffered menulis (optimum untuk fail besar). Ia menekankan pengendalian ralat yang teguh, menggunakan penangguhan, dan memeriksa kesilapan tertentu.

Bagaimana anda menulis ujian unit di GO? Bagaimana anda menulis ujian unit di GO? Mar 21, 2025 pm 06:34 PM

Artikel ini membincangkan ujian unit menulis di GO, meliputi amalan terbaik, teknik mengejek, dan alat untuk pengurusan ujian yang cekap.

Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya? Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya? Mar 10, 2025 pm 05:36 PM

Artikel ini meneroka menggunakan alat pengesanan untuk menganalisis aliran pelaksanaan aplikasi GO. Ia membincangkan teknik instrumentasi manual dan automatik, membandingkan alat seperti Jaeger, Zipkin, dan OpenTelemetry, dan menonjolkan visualisasi data yang berkesan

See all articles