Rumah >pembangunan bahagian belakang >Golang >Adakah Perintah Lelaran Go Map Bergantung pada Urutan Sisipan Kunci?

Adakah Perintah Lelaran Go Map Bergantung pada Urutan Sisipan Kunci?

Barbara Streisand
Barbara Streisandasal
2024-11-22 09:11:11494semak imbas

Does Go Map Iteration Order Depend on Key Insertion Order?

Pesanan Tugasan dalam Peta Go

Memandangkan kod Go berikut:

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)
}

Ia menghasilkan:

{40.68433 74.39967}

map[Bell Labs:{40.68433 74.39967} test:{12 100}]

Mengubah suai perisytiharan puncak ujian dengan menggerakkan "}" kanan 4 ruang, seperti berikut:

m["test"] = Vertex{
    12.0, 100,
}

Menukar output kepada:

{40.68433 74.39967}

map[test:{12 100} Bell Labs:{40.68433 74.39967}]

Penjelasan:

Peta "pesanan" dalam Go bergantung pada rawak fungsi hash yang digunakan untuk menghalang serangan penafian perkhidmatan. Mengikut penjejak isu Go (http://code.google.com/p/go/issues/detail?id=2630), susunan peta tidak dijamin mengikut spesifikasi.

Mengikut spesifikasi , peta ialah kumpulan unsur tidak tertib dengan kunci unik. Pelaksanaan masa hadapan boleh mengubah susunan peta tanpa mengubahnya dalam kod anda. Oleh itu, bergantung pada susunan peta tertentu bukanlah amalan yang disyorkan dalam Go.

Atas ialah kandungan terperinci Adakah Perintah Lelaran Go Map Bergantung pada Urutan Sisipan Kunci?. 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