¿Por qué los valores del mapa no son direccionables?

Mientras jugaba con el código Go, descubrí que los valores del mapa no son direccionables. Por ejemplo,

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)
}

Genera error

mapaddressable.go: 7: no se puede tomar la dirección de mymap [1]

Mientras que el código,

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)
}

Funciona perfectamente bien.

¿Por qué esto es tan? ¿Por qué los desarrolladores de Go han elegido que ciertos valores no sean direccionables? ¿Es esto un inconveniente o una característica del lenguaje?

Editar: Siendo de un fondo C ++, no estoy acostumbrado a estonot addressable tendencia que parece prevalecer en Go. Por ejemplo, el siguiente código funciona bien:

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

Sería bueno si alguien pudiera señalar por qué lo mismodireccionabilidad no se puede lograr (o intencionalmente no se logró) en Go.

Respuestas a la pregunta(1)

Su respuesta a la pregunta