4
Я пытаюсь изменить IPAddr для «loopback», но, похоже, не имеет прямого доступа к элементу.Как изменить карту в go
addrs["loopback"][0] = byte(2) //cannot assign to addrs["loopback"][0]
Как я могу это сделать в пределах?
package main
import "fmt"
type IPAddr [4]byte
func main() {
addrs := map[string]IPAddr{
"loopback": {127, 0, 0, 1},
"googleDNS": {8, 8, 8, 8},
}
addrs["loopback"][0] = byte(2)
for n, a := range addrs {
fmt.Printf("%v: %v\n", n, a)
}
}
Мне интересно, почему это неизменно. карта должна быть похожа на dic в Python, которая может быть изменена напрямую. – Alfred
Это не очень хорошее сравнение, потому что у Python нет типа типа типа массива Go. Если бы у Python был тип типа массива Go, я бы подумал, что применяется то же правило. Создатели карт, что свобода перемещения ценностей в памяти. Значение карты изменчиво, это просто не адресуемо. –
Другим способом достижения этого является определение IPAddr как среза: type IPAddr [] byte – Alfred