Tengo un mapa:
var sessions = map[string] chan int{}
¿Cómo lo elimino sessions[key]? Lo intenté:
sessions[key] = nil,false;
Eso no funcionó.
Actualización (noviembre de 2011):
La sintaxis especial para eliminar entradas de mapas se elimina en Go versión 1 :
Ir 1 eliminará la asignación especial del mapa e introducirá una nueva función incorporada
delete:delete(m, x)borrará la entrada del mapa recuperada por la expresiónm[x]. ...

sessions["moo"] = sessions["moo"], false;(? O es que mal)Copiado de las notas de la versión Go 1
En el idioma anterior, para eliminar la entrada con clave
kdel mapa representado porm, se escribió la declaración,Esta sintaxis era un caso especial peculiar, la única asignación de dos a uno. Se requería pasar un valor (generalmente ignorado) que se evalúa pero se descarta, más un valor booleano que casi siempre era la constante falsa. Hizo el trabajo pero era extraño y un punto de discusión.
En Go 1, esa sintaxis se ha ido; en su lugar hay una nueva función incorporada,
delete. La llamadaeliminará la entrada del mapa recuperada por la expresión
m[k]. No hay valor de retorno. Eliminar una entrada inexistente es un no-op.Actualización: la ejecución
go fixconvertirá expresiones del formulariom[k] = value, falseendelete(m, k)cuando esté claro que el valor ignorado se puede descartar de forma segura del programa y sefalserefiere a la constante booleana predefinida. La herramienta de reparación marcará otros usos de la sintaxis para la inspección del programador.fuente
De Go eficaz :
fuente
sessions.go:6: cannot use 0 (type int) as type chan intassignment count mismatch: 1 = 2 (use delete)En estos días, nada se estrellará.
fuente
Usar en
make (chan int)lugar denil. El primer valor tiene que ser del mismo tipo que su mapa.ACTUALIZACIÓN: Corrigió mi respuesta.
fuente
sessions.go:6: cannot use 0 (type int) as type chan intpackage main func main () {var sessions = map[string] chan int{};sessions["moo"] = make (chan int);}