Nếu tôi có một bản đồ m là có một cách tốt hơn để nhận được một lát các giá trị v sau đóTrong golang là có một cách tốt đẹp để nhận được một lát giá trị từ một bản đồ?
package main
import (
"fmt"
)
func main() {
m := make(map[int]string)
m[1] = "a"
m[2] = "b"
m[3] = "c"
m[4] = "d"
// Can this be done better?
v := make([]string, len(m), len(m))
idx := 0
for _, value := range m {
v[idx] = value
idx++
}
fmt.Println(v)
}
Có một tính năng xây dựng một bản đồ? Có một chức năng trong một gói Go, hay đây là mã tốt nhất để làm nếu tôi phải làm gì?
thay vì '_' ở của bạn giá trị cho vòng lặp, gọi nó là idx và mương idx ++ kinh doanh –
Không, anh không thể, khi bạn nằm trong khoảng trên bản đồ nó trả chìa khóa, giá trị không chỉ mục,. Trong ví dụ của mình, anh ta sử dụng 1 làm khóa đầu tiên và điều đó sẽ làm cho các chỉ mục trong slice v không đúng vì chỉ mục bắt đầu sẽ là 1 không bằng 0 và khi nó đến 4 nó sẽ nằm ngoài phạm vi. https://play.golang.org/p/X8_SbgxK4VX – Popmedic