Menyingkap Kaedah Penegasan Jenis: .(data_type)
Dalam dunia Go, kaedah .(data_type) yang membingungkan telah membingungkan ramai , menimbulkan persoalan: apakah fungsinya dan apakah kepentingannya? Mari kita mulakan perjalanan untuk menyahmistikannya.
Seperti yang digambarkan dalam coretan kod yang anda berikan:
b := "silly" reflect.TypeOf(b.(string)) // string reflect.TypeOf(b) // string
Kaedah .(data_type), dalam kes ini b.(rentetan), membenarkan anda untuk menukar nilai antara muka{} (b) kepada jenis data tertentu, dalam contoh ini rentetan. Ia memberikan jaminan kepada pengkompil bahawa nilai itu sememangnya daripada jenis yang ditentukan, seperti rentetan dalam kejadian ini.
Walau bagaimanapun, adalah penting untuk diingat bahawa b.(rentetan) tidak mengubah nilai asas b . Sebaliknya, ia mengekstrak nilai baharu jenis yang ditentukan. Untuk mengesahkan kejayaan penegasan jenis, anda boleh memasukkan pembolehubah boolean tambahan:
s, ok := b.(string) // s is of type string if !ok { // b did not contain a value of type string! }
Pendekatan ini bukan sahaja memberikan anda nilai (s) yang ditukar, tetapi juga hasil boolean (ok) yang menunjukkan sama ada penukaran berjaya atau tidak.
Untuk menjelaskan lebih lanjut, penegasan jenis tidak secara eksplisit "memberitahu pengkompil bahawa b ialah rentetan." Sebaliknya, ia secara dinamik mengekstrak nilai rentetan daripada b, menimbulkan ralat jika b mengandungi jenis yang berbeza. Nilai yang diekstrak kemudiannya boleh diproses sebagai rentetan, membolehkan anda melakukan operasi seperti menghiris, yang tidak boleh dilakukan secara langsung pada nilai antara muka.
Atas ialah kandungan terperinci Apakah yang Dilakukan oleh Kaedah Penegasan Jenis `.(data_type)` Go dan Mengapa Ia Penting?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!