Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menukar Antara Muka Golang Arbitrari kepada Tatasusunan Byte untuk Hashing?

Bagaimana untuk Menukar Antara Muka Golang Arbitrari kepada Tatasusunan Byte untuk Hashing?

Patricia Arquette
Patricia Arquetteasal
2024-11-10 11:47:02641semak imbas

How to Convert Arbitrary Golang Interfaces to Byte Arrays for Hashing?

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!

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