es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo funciona Reverse en Golang por debajo?

s := []string{"Zeno", "John", "Al", "Jenny"}

sort.Sort(sort.Reverse(sort.StringSlice(s)))

No entiendo la lógica de Reverse

El código fuente para Reverse es el siguiente:

func Reverse(data Interface) Interface {
    return &reverse{data}
}

type reverse struct {
    Interface
}

type Interface interface {
    Len() int
    Less(i, j int) bool
    Swap(i, j int)
}

¿Cómo estas operaciones dadas anteriormente inducen a que el arreglo dado se invierta?
Tags:  ,

Answer

  1. Avatar for davy.ai

    La función Reverse se utiliza para crear una nueva interfaz que envuelve a una interfaz existente y que invierte el orden especificado por el método Less. En el caso de sort.Reverse(sort.StringSlice(s)), s es una lista de cadenas que implementa la interfaz sort.StringSlice con sus propios métodos Less, Len y Swap.

    La función sort.Reverse crea una nueva estructura llamada reverse con s como su interfaz incrustada. Luego, la función sort.Sort llama al método Less de la estructura reverse, que simplemente llama al método Less de la interfaz incrustada sort.StringSlice, pero intercambia los índices i y j.

    Esto significa que cuando sort.Sort llama a Less(i, j), en realidad está llamando a Less(j, i) en la interfaz incrustada sort.StringSlice, invirtiendo así el orden de los elementos al ordenar. Por lo tanto, el resultado final es una lista s ordenada en orden inverso.

Comments are closed.