Menukar Antara Muka Golang Arbitrari kepada Tatasusunan Bait
Apabila berinteraksi dengan jenis data yang berbeza dalam Go, adalah perlu untuk menghantarnya ke dalam format yang serasi, seperti tatasusunan bait. Pakej pengekodan/penyahkodan seperti gob mendayakan penukaran ini untuk antara muka sewenang-wenangnya.
Dalam contoh kod yang disediakan, fungsi ComputeHash bertujuan untuk mencincang jenis data arbitrari kepada nilai uint. Untuk melakukan ini, fungsi memerlukan data input berada dalam bentuk tatasusunan bait. Walau bagaimanapun, jenis antara muka{} boleh menyimpan pelbagai nilai, menjadikannya mencabar untuk menukarnya secara terus kepada tatasusunan bait.
Penyelesaian terletak pada pakej pengekodan/gob, yang membolehkan pengekodan dan penyahkodan yang cekap pelbagai data jenis ke dalam dan dari aliran bait. Begini cara melaksanakannya menggunakan gob:
import ( "encoding/gob" "bytes" ) func GetBytes(key interface{}) ([]byte, error) { var buf bytes.Buffer enc := gob.NewEncoder(&buf) err := enc.Encode(key) if err != nil { return nil, err } return buf.Bytes(), nil }
Dalam fungsi ini, kami mencipta bait. Contoh penimbal dan pengekod gob. Kami kemudian mengekodkan kunci nilai{} antara muka ke dalam penimbal. Data yang dikodkan dikembalikan sebagai tatasusunan bait, yang boleh diproses selanjutnya mengikut keperluan.
Mengintegrasikan fungsi ini dengan fungsi ComputeHash:
func ComputeHash(key interface{}) (uint, error) { data, err := GetBytes(key) if err != nil { return 0, err } // ... Continue with hash computation using data as a byte array }
Dengan menggunakan gob, kami boleh mengendalikan data sewenang-wenangnya taip dengan cara yang konsisten, memastikan ia ditukar kepada format tatasusunan bait yang sesuai untuk fungsi ComputeHash.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Antara Muka Golang Arbitrari kepada Tatasusunan Byte untuk Hashing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!