Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah Menukar Inden dalam Tugasan Go Map Mempengaruhi Susunan Output?

Mengapakah Menukar Inden dalam Tugasan Go Map Mempengaruhi Susunan Output?

Patricia Arquette
Patricia Arquetteasal
2024-11-21 05:38:11167semak imbas

Why Does Changing the Indentation in Go Map Assignments Affect the Output Order?

Pesanan Tugasan dalam Peta Go

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

Outputnya ialah:

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

Walau bagaimanapun, jika perubahan kecil dibuat pada pengisytiharan puncak ujian, dengan menggerakkan pendakap kerinting penutup empat ruang ke kanan:

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

Output berubah kepada:

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

Timbul persoalan: Mengapa sedikit pengubahsuaian ini menjejaskan susunan peta?

Jawapan:

Tertib peta dalam Go bergantung pada fungsi cincang asas yang digunakan. Fungsi cincang ini rawak untuk mengurangkan serangan penafian perkhidmatan yang mengeksploitasi perlanggaran cincang. Rujuk kepada penjejak isu berikut untuk mendapatkan maklumat lanjut:

http://code.google.com/p/go/issues/detail?id=2630

Adalah penting untuk ambil perhatian bahawa susunan peta tidak dijamin oleh spesifikasi bahasa. Walaupun pelaksanaan Go semasa mengekalkan susunan yang stabil, semakan masa hadapan mungkin padat peta semasa pengumpulan sampah atau operasi lain, yang berpotensi mengubah susunan tanpa pengubahsuaian eksplisit peta mengikut kod. Oleh itu, bergantung pada susunan khusus untuk peta adalah tidak digalakkan.

Seperti yang dinyatakan dalam spesifikasi Go:

Peta ialah kumpulan tidak tertib bagi elemen satu jenis , dipanggil jenis elemen, diindeks oleh set kunci unik jenis lain, dipanggil jenis kunci.

Atas ialah kandungan terperinci Mengapakah Menukar Inden dalam Tugasan Go Map Mempengaruhi Susunan Output?. 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