Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menukar antara muka{} dengan selamat kepada int dalam Go?

Bagaimana untuk Menukar antara muka{} dengan selamat kepada int dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-15 08:06:17987semak imbas

How to Safely Convert an interface{} to an int in Go?

Menukar antara muka{} kepada int dalam Go

Kod Go anda cuba menukar nilai antara muka{} kepada int secara langsung, tetapi penukaran gagal kerana kekangan jenis. Mesej ralat menunjukkan bahawa penegasan jenis diperlukan untuk penukaran ini.

Mari kita fahami masalah dan penyelesaiannya:

Masalah:

Dalam kod yang disediakan, val pembolehubah ialah antara muka jenis{}. Ini bermakna ia boleh menyimpan nilai apa-apa jenis. Tugasan iAreaId := int(val) cuba menukar nilai antara muka{} kepada int. Walau bagaimanapun, penukaran langsung ini tidak dibenarkan dalam Go.

Penyelesaian:

Untuk menukar nilai antara muka{} dengan betul kepada jenis tertentu, penegasan jenis diperlukan. Penegasan jenis memberikan pengkompil dengan petunjuk eksplisit bahawa anda ingin menukar nilai kepada jenis tertentu.

Untuk menegaskan val sebagai int, gunakan salah satu sintaks berikut:

  1. Rawan panik:

    iAreaId := val.(int)

    Jika val tidak boleh ditukar kepada int, pendekatan ini akan panik.

  2. Tidak panik:

    iAreaId, ok := val.(int)

    Pendekatan ini memperuntukkan iAreaId kepada nilai yang ditukar dan ok kepada boolean yang menunjukkan sama ada penukaran berjaya. Jika penukaran gagal, ok akan menjadi palsu.

Memahami Peraturan Penukaran:

Penukaran terus daripada antara muka{} kepada jenis tertentu ialah tidak dibenarkan mengikut spesifikasi bahasa Go. Penegasan jenis diperlukan untuk mengatasi peraturan ini dan secara eksplisit menghantar nilai kepada jenis yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Menukar antara muka{} dengan selamat kepada int 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