Rumah > pembangunan bahagian belakang > Golang > Pencincangan rentetan dalam Kotlin dan Golang

Pencincangan rentetan dalam Kotlin dan Golang

WBOY
Lepaskan: 2024-02-06 10:12:12
ke hadapan
708 orang telah melayarinya

Kotlin 和 Golang 中的字符串散列

Kandungan soalan

Dalam perkhidmatan saya mempunyai rentetan yang dicincang seperti ini:

fun string.tohash(): long {
    var hashcode = this.hashcode().tolong()
    if (hashcode < 0l) {
        hashcode *= -1
    }
    return hashcode
}
Salin selepas log masuk

Saya ingin meniru kod ini dalam perkhidmatan b yang ditulis dalam golang, jadi untuk perkataan yang sama saya mendapat cincangan yang sama. Setakat yang saya faham daripada dokumentasi kotlin, cincang yang digunakan mengembalikan integer 64-bit. Oleh itu, saya melakukan ini:

func hash(s string) int64 {
    h := fnv.new64()
    h.write([]byte(s))
    v := h.sum64()
    return int64(v)
}
Salin selepas log masuk

Tetapi saya tidak mendapat nilai yang sama semasa melakukan ujian unit. Saya dapat:

func test_hash(t *testing.t) {
    tests := []struct {
        input  string
        output int64
    }{
        {input: "papafritas", output: 1079370635},
    }
    for _, test := range tests {
        got := hash(test.input)
        assert.equal(t, test.output, got)
    }
}
Salin selepas log masuk

Hasil:

7841672725449611742
Salin selepas log masuk

Adakah saya melakukan sesuatu yang salah?


Jawapan betul


Java dan Kotlin menggunakan fungsi cincang yang berbeza daripada Go.

Pilihan yang mungkin adalah:

  1. Menggunakan fungsi cincang standard.
  2. Laksanakan semula Kod cincang Java untuk rentetan dalam Go.

Atas ialah kandungan terperinci Pencincangan rentetan dalam Kotlin dan Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan