Rumah > pembangunan bahagian belakang > Golang > Mengapa Membandingkan Instance Struktur Nil dengan Nil Mengembalikan \'Ralat bukan nil\'?

Mengapa Membandingkan Instance Struktur Nil dengan Nil Mengembalikan \'Ralat bukan nil\'?

Linda Hamilton
Lepaskan: 2024-10-30 08:56:02
asal
822 orang telah melayarinya

Why Does Comparing a Nil Struct Instance to Nil Return

Perbandingan Antara Muka dengan Nilai Nil

Soalan:

Walaupun mengisytiharkan contoh nil bagi struct yang memenuhi antara muka ralat , mengapa perbandingan kepada nil mengembalikan "Ralat bukan nol"?

Jawapan:

Perbandingan antara muka dalam Go mempertimbangkan kedua-dua jenis dan nilai entiti yang dibandingkan. Apabila membandingkan kejadian ralat kepada sifar, perkara berikut berlaku:

  • Titus sifar antara muka ralat mempunyai nilai sifar dan jenis sifar (ralat(nil)).
  • Tiada sifar instance struct Goof mempunyai nilai nol tetapi jenis bukan nol (*Goof).

Oleh itu, walaupun kedua-dua kejadian dimulakan dengan nilai nil, jenis yang berbeza menghasilkan perbandingan yang tidak sama rata.

Untuk menangani perkara ini dan mengembalikan output "Ralat adalah sifar" yang dijangkakan, tika nil hendaklah diberikan kepada pembolehubah ralat, kerana nilai sifarnya ialah ralat(nihil). Sebagai alternatif, mengembalikan sifar dalam fungsi yang mengembalikan ralat juga akan menghasilkan hasil yang dimaksudkan.

Penerangan tentang Perbandingan Antara Muka:

Antara muka Go dilaksanakan menggunakan jenis dan a nilai. Jenis menunjukkan pelaksanaan konkrit antara muka, manakala nilai mewakili data sebenar yang disimpan. Nilai antara muka dianggap sifar hanya apabila kedua-dua jenis dan nilai tidak ditetapkan (tiada, tiada).

Apabila membandingkan dua nilai antara muka untuk kesaksamaan, kedua-dua jenis dan nilai mesti sepadan. Dalam contoh yang diberikan, tika nil bagi struct Goof mempunyai nilai nol tetapi jenis bukan nol, menjadikannya tidak sama dengan tika ralat, yang mempunyai nilai dan jenis nil.

Konsep ini melangkaui kejadian sifar. Contohnya, dua nilai integer dengan data asas yang sama (cth., 3) tetapi jenis yang berbeza (int dan Bob) akan dibandingkan sebagai tidak sama apabila disimpan dalam antara muka kerana jenisnya berbeza.

Atas ialah kandungan terperinci Mengapa Membandingkan Instance Struktur Nil dengan Nil Mengembalikan \'Ralat bukan nil\'?. 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