package vals // Dissocer wraps the Dissoc method. type Dissocer interface { // Dissoc returns a slightly modified version of the receiver with key k // dissociated with any value. Dissoc(k any) any } // Dissoc takes a container and a key, and returns a modified version of the // container, with the given key dissociated with any value. It is implemented // for the Map type and types satisfying the Dissocer interface. For other // types, it returns nil. func Dissoc(a, k any) any { switch a := a.(type) { case Map: return a.Dissoc(k) case StructMap: return promoteToMap(a).Dissoc(k) case Dissocer: return a.Dissoc(k) default: return nil } }