You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: thegera4.go
    path of file: ./repos/roadmap-retos-programacion/Roadmap/08 - CLASES/go
    
    the code of the file until where you have to start completion: /* 
NOTA IMPORTANTE:
Go no tiene clases como tal, pero se pueden simular con structs(estructuras) 
y métodos asociados a ellas.
En este ejemplo se simulan las estructuras de pila y cola, y se les agregan
métodos para realizar operaciones sobre ellas.
Los metodos se definen con la estructura a la que pertenecen como primer 
argumento el cual se llama receptor.
*/

package main

import "fmt"

// Simulacion de clase "Car" con métodos asociados
type Car struct {
	brand string // atributos
	model string
	year int
}

// Método asociado a la estructura "Car"
func (car Car) printInfo() string {
	return fmt.Sprintf("Marca: %s, Modelo: %s, Año: %d", car.brand, car.model, car.year)
}

// Método asociado a la estructur
    
func main () {

	// Simulacion de clase "Car"
	car1 := Car{brand: "Ford", model: "Fiesta", year: 2019}
	fmt.Println(car1.printInfo())
	car1.changeBrand("Chevrolet")
	fmt.Println(car1.printInfo())
	
	// Extra: Stack / Pila
	stack := Stack[string]{}
	fmt.Println("Pila vacía: ", stack.IsEmpty())
	stack.Push("1")
	stack.Push("2")
	stack.Push("3")
	fmt.Println("Pila:" + fmt.Sprint(stack.data))
	fmt.Println("Ahora se eliminara el ultimo elemento de la pila...")
	stack.Pop()
	fmt.Println("Pila:" + fmt.Sprint(stack.data))
	
	// Extra: Queue / Cola
	queue := Queue[int]{}
	fmt.Println("Cola vacía: ", queue.IsEmpty())
	queue.Enqueue(1)
	queue.Enqueue(2)
	queue.Enqueue(3)
	fmt.Println("Cola:" + fmt.Sprint(queue.data))
	fmt.Println("Ahora se eliminara el primer elemento de la cola...")
	queue.Dequeue()
	fmt.Println("Cola:" + fmt.Sprint(queue.data))

}