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

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

Linda Hamilton
Linda Hamiltonasal
2024-10-30 08:56:02709semak imbas

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!

Kenyataan:
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