Rumah > pembangunan bahagian belakang > Golang > Mengapa Keluaran Peta Go Nampak Tersusun Walaupun Peta Tidak Tersusun?

Mengapa Keluaran Peta Go Nampak Tersusun Walaupun Peta Tidak Tersusun?

Mary-Kate Olsen
Lepaskan: 2024-12-01 13:43:11
asal
113 orang telah melayarinya

Why Does Go's Map Output Seem Ordered Despite Maps Being Unordered?

Turutan Tugasan dalam Peta

Dalam Go, peta ialah koleksi tidak tertib pasangan nilai kunci. Walau bagaimanapun, output coretan kod berikut nampaknya mencadangkan susunan kepada pasangan nilai kunci:

package main

import "fmt"

type Vertex struct {
    Lat, Long float64
}

var m map[string]Vertex

func main() {
    m = make(map[string]Vertex)
    m["Bell Labs"] = Vertex{
        40.68433, 74.39967,
    }
    m["test"] = Vertex{
        12.0, 100,
    }
    fmt.Println(m["Bell Labs"])
    fmt.Println(m)
}
Salin selepas log masuk

Apabila coretan kod di atas dilaksanakan, ia mengeluarkan:

{40.68433 74.39967}
map[Bell Labs:{40.68433 74.39967} test:{12 100}]
Salin selepas log masuk

Walau bagaimanapun, jika ruang putih di sekeliling pendakap kerinting kanan dalam tugasan kekunci "ujian" diubah suai, output perubahan:

m["test"] = Vertex{
    12.0, 100,
}
Salin selepas log masuk

Dengan pengubahsuaian ini, output menjadi:

{40.68433 74.39967}
map[test:{12 100} Bell Labs:{40.68433 74.39967}]
Salin selepas log masuk

Penjelasan

Tingkah laku yang diperhatikan adalah disebabkan oleh rawak Fungsi cincang peta Go. Rawak ini dilaksanakan untuk mengelakkan serangan penafian perkhidmatan yang mengeksploitasi perlanggaran cincang. Seperti yang dinyatakan dalam penjejak isu Go:

http://code.google.com/p/go/issues/detail?id=2630
Salin selepas log masuk

Pesanan peta tidak dijamin dalam Go. Walaupun pelaksanaan semasa tidak menyusun semula peta secara eksplisit, pelaksanaan masa hadapan mungkin padat peta semasa GC atau operasi lain, yang berpotensi menjejaskan pesanan. Oleh itu, adalah tidak bijak untuk bergantung pada susunan peta dalam kod anda.

Atas ialah kandungan terperinci Mengapa Keluaran Peta Go Nampak Tersusun Walaupun Peta Tidak Tersusun?. 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