Rumah >pembangunan bahagian belakang >Golang >Pergi: Taip penegasan - adakah terdapat pepijat dalam spesifikasi?

Pergi: Taip penegasan - adakah terdapat pepijat dalam spesifikasi?

WBOY
WBOYke hadapan
2024-02-06 08:35:10848semak imbas

Go:类型断言 - 规范中是否有错误?

Kandungan soalan

go Adakah terdapat pepijat dalam penegasan jenis kanonik?

A type assertion used in an assignment statement or initialization of the special form
v, ok = x.(T)
v, ok := x.(T)
var v, ok = x.(T)
var v, ok interface{} = x.(T) // dynamic types of v and ok are T and bool

yields an additional untyped boolean value.

Apakah maksud contoh terakhir? var v,好的接口{} = x.(t)?

Saya mendapat ralat semasa pergi 1.19 ralat sintaks: antara muka tidak dijangka, mengharapkan := atau = atau komasyntax 错误:意外的接口,期望 := 或 = 或逗号


正确答案


所有这些行都在尝试相同的操作:x 的类型断言以键入 T。值 ok 确定断言是否成功。在您提供的最后一个示例中,唯一的区别是,您没有为 vok 确定类型,而是为两者提供了 interface{} 的类型。将 vok 声明为 interface{} 不会更改它们包含的值。它允许您将它们发送到函数或将它们添加到需要 interface{}

Jawapan betul

🎜🎜Semua baris ini mencuba perkara yang sama:x untuk menaip T. Nilai ok menentukan sama ada penegasan itu berjaya. Dalam contoh terakhir yang anda berikan, satu-satunya perbezaan ialah daripada menentukan jenis untuk v dan ok, anda menyediakan antara muka{} untuk kedua-duanya taip. Mengisytiharkan v dan ok sebagai antara muka{} tidak mengubah nilai yang terkandung di dalamnya. Ia membolehkan anda menghantarnya ke fungsi atau menambahkannya pada koleksi yang memerlukan jenis antara muka{}, di mana ia mesti ditegaskan semula. 🎜

Atas ialah kandungan terperinci Pergi: Taip penegasan - adakah terdapat pepijat dalam spesifikasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam