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

Mengapakah Menukar Inden dalam Tugasan Go Map Mempengaruhi Susunan Output?

Patricia Arquette
Lepaskan: 2024-11-21 05:38:11
asal
218 orang telah melayarinya

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

Outputnya ialah:

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

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

Output berubah kepada:

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

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!

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