code: func DeepFlatten(slice []interface{}, depth int) []interface{} {
  	if depth == 0 {
  		return slice
  	}
  	returnSlice := []interface{}{}
  
  	for _, element := range slice {
  		if s, ok := element.([]interface{}); ok {
  			returnSlice = append(returnSlice, DeepFlatten(s, depth-1)...)
  		} else {
  			returnSlice = append(returnSlice, element)
  		}
  
  	}
  
  	return returnSlice
  }
docs: // Recursively flattens a list by splicing any sub-lists into their parent until
  // depth is reached. If a negative number is passed for depth then it continues
  // until no elements of the returned list are lists