Почему значения карт не адресуемы?

Играя с кодом Go, я обнаружил, что значения карты не адресуемы. Например,

package main
import "fmt"

func main(){
    var mymap map[int]string = make(map[int]string)
    mymap[1] = "One"
    var myptr *string = &mymap[1]
    fmt.Println(*myptr)
}

Генерирует ошибку

mapaddressable.go: 7: не может взять адрес mymap [1]

Принимая во внимание, код,

package main
import "fmt"

func main(){
    var mymap map[int]string = make(map[int]string)
    mymap[1] = "One"
    mystring := mymap[1]
    var myptr *string = &mystring
    fmt.Println(*myptr)
}

отлично работает

Почему это так? Почему разработчики Go решили сделать определенные значения не адресуемыми? Это недостаток или особенность языка?

редактировать: Будучи из C ++ фона, я не привык к этомуnot addressable тенденция, которая, кажется, преобладает в го. Например, следующий код работает просто отлично:

#include<iostream>
#include<map>
#include<string>
using namespace std;
int main(){
    map<int,string> mymap;
    mymap[1] = "one";
    string *myptr = &mymap[1];
    cout<<*myptr;
}

Было бы хорошо, если бы кто-то мог указать, почему то же самоеадресация не может быть достигнуто (или намеренно не было достигнуто) в Go.

Ответы на вопрос(1)

Ваш ответ на вопрос