Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Semak sama ada Nilai Melaksanakan Antara Muka dalam Go?

Bagaimanakah Saya Boleh Semak sama ada Nilai Melaksanakan Antara Muka dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-12-30 20:29:17252semak imbas

How Can I Check if a Value Implements an Interface in Go?

Menyemak Pelaksanaan Antara Muka dalam Go

Dalam Go, menggunakan antara muka menyediakan cara untuk menentukan gelagat biasa untuk jenis data yang berbeza. Walau bagaimanapun, menentukan sama ada nilai melaksanakan antara muka tertentu boleh menjadi rumit.

Type Assertion vs. Type Switch

Kaedah yang paling biasa untuk menyemak sama ada nilai melaksanakan antara muka adalah melalui penegasan jenis:

_, ok := val.(Somether)

Penegasan jenis ini mengesahkan jika nilai val boleh ditukar kepada jenis Somether. Jika boleh, ia memberikan nilai ditukar kepada _ dan menetapkan ok kepada benar; jika tidak, ia ditetapkan ok kepada palsu.

Walau bagaimanapun, penegasan jenis menganggap bahawa val ialah antara muka, yang mungkin tidak selalu berlaku. Untuk semakan jenis eksplisit, anda boleh menggunakan kaedah suis jenis:

var _ Somether = (*MyType)(nil)

Dalam contoh ini, kami mengisytiharkan pembolehubah jenis Somether yang tidak dinamakan dan menetapkannya sama dengan penuding nol jenis MyType. Sintaks ini memastikan bahawa pengkompil mengesahkan jika MyType melaksanakan Somether, mencetuskan ralat kompilasi jika tidak.

Kesederhanaan Jenis Diketahui

Adalah penting untuk ambil perhatian bahawa jika jenis val diketahui, pengkompil secara automatik menyemak jika ia melaksanakan Somether. Semakan eksplisit yang diterangkan di atas hanya perlu apabila jenisnya tidak diketahui.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Semak sama ada Nilai Melaksanakan Antara Muka dalam Go?. 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