Go Oggetti

Da Andreabont's Wiki.

In Go non esistono gli oggetti classici OOP, ma è possibile con un hack ottenere un comportamento simile.

package main

// Prototipo wrapper
type funzione func(int) int

// Struttura oggetto
type struttura struct {
    val int
    funzione
}

// Metodi oggetto
func metodo(this * struttura, x int) int {
    return x * this.val
}


// Costruttore oggetto
func newStruttura(x int) * struttura {

    temp: = new(struttura)
    temp.val = x
    temp.funzione = func(x int) int {
        return metodo(temp, x)
    }
    return temp

}

func main() {
    miaStruttura: = newStruttura(3)
    println(miaStruttura.funzione(2))
}