Sono nuovo di Golang e ora voglio ottenere un oggetto arbitrario da una mappa, qual è il modo più idiomatico per farlo? Posso solo pensare di STH come di seguito:Ottieni una chiave/elemento arbitrario da una mappa
func get_some_key(m map[int]int) int {
for k := range m {
return k
}
return 0
}
Il motivo che voglio che sia sto usando una mappa di mantenere una serie di posti di lavoro e con una mappa che posso ottenere un lavoro in attesa o di rimuovere un lavoro finito a O (1). Immagino che questo dovrebbe essere un requisito comune ma non è ovvio farlo in giro.
Grazie in anticipo!
Conosci il valore della chiave che stai cercando di ottenere o impostare o stai cercando di trovare una chiave casuale o una chiave che non conosci in anticipo? – dethtron5000
Stai cercando la chiave che ha un valore particolare? Se stai solo cercando il valore associato a un tasto è semplicemente 'm [i]'. –
Il tuo approccio sembra buono. Se è possibile accedere simultaneamente alla mappa da due goroutine, proteggere l'operazione di recupero/eliminazione con un 'sync.Mutex' in modo che due goroutine non catturino lo stesso lavoro (e poiché le mappe sono, per motivi di velocità, non intrinsecamente thread-safe) . – twotwotwo