Apakah Perbezaan Antara Jenis Alias ​​dan Definisi Jenis dalam Go?

Barbara Streisand
Lepaskan: 2024-11-08 12:29:02
asal
629 orang telah melayarinya

What's the Difference Between Type Aliases and Type Definitions in Go?

Memahami Perbezaan Antara Jenis Alias ​​dan Definisi Jenis dalam Go

Dalam Go, jenis alias dan definisi jenis ialah dua binaan yang membolehkan pembangun untuk tentukan jenis tersuai. Walaupun mereka mungkin kelihatan serupa pada pandangan pertama, terdapat beberapa perbezaan halus antara mereka.

Jenis Alias

Alias ​​jenis mentakrifkan nama baharu untuk jenis sedia ada. Sintaks untuk alias jenis ialah:

type A = string
Salin selepas log masuk

Dalam contoh ini, jenis A menjadi alias untuk rentetan jenis terbina dalam. Ini bermakna anda boleh menggunakan A di mana-mana sahaja di mana anda biasanya menggunakan rentetan.

Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa alias jenis tidak mencipta jenis baharu. Sebaliknya, ia hanya memberikan nama yang berbeza untuk yang sedia ada. Ini mempunyai beberapa implikasi:

  • Anda tidak boleh menentukan kaedah pada alias jenis.
  • Refleksi tidak akan mengenali alias jenis sebagai jenis yang berasingan.

Definisi Jenis

Takrifan jenis mentakrifkan jenis baharu dengan ciri dan tingkah laku uniknya sendiri. Sintaks untuk definisi jenis ialah:

type A string
Salin selepas log masuk

Dalam contoh ini, jenis A ditakrifkan sebagai jenis baharu yang mempunyai perwakilan asas yang sama dengan rentetan jenis terbina dalam. Ini bermakna anda boleh menukar antara A dan rentetan tanpa sebarang penalti prestasi.

Walau bagaimanapun, tidak seperti alias jenis, definisi jenis mencipta jenis baharu yang berbeza daripada jenis asasnya. Ini mempunyai kelebihan berikut:

  • Anda boleh menentukan kaedah pada definisi jenis.
  • Refleksi akan mengenali definisi jenis anda sebagai jenis yang berasingan.

Contoh Kes Penggunaan

Untuk menggambarkan perbezaan antara alias jenis dan definisi jenis, pertimbangkan kod berikut:

package main

import (
    "fmt"
)

type A = string
type B string

func main() {
    var a A = "hello"
    var b B = "hello"
    fmt.Printf("a is %T\nb is %T\n", a, b)
}
Salin selepas log masuk

Dalam contoh ini, A ialah alias jenis untuk rentetan, manakala B ialah definisi jenis. Output program ialah:

a is string
b is main.B
Salin selepas log masuk

Seperti yang anda lihat, jenis alias A masih dikenali sebagai rentetan, manakala definisi jenis B dikenali sebagai jenis yang berasingan.

Atas ialah kandungan terperinci Apakah Perbezaan Antara Jenis Alias ​​dan Definisi Jenis dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan