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

Patricia Arquette
Lepaskan: 2024-11-10 11:47:02
asal
670 orang telah melayarinya

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
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan