2011-11-28 14 views
18

Me doy cuenta de que Go no tiene clases, pero en cambio empuja la idea de las estructuras.init function for structs

¿Las estructuras tienen algún tipo de función de inicialización que se pueda llamar similar a una función __construct() de una clase?

Ejemplo:

type Console struct { 
    X int 
    Y int 
} 

func (c *Console) init() { 
    c.X = "5" 
} 

// Here I want my init function to run 
var console Console 

// or here if I used 
var console Console = new(Console) 

Respuesta

39

Go no tiene constructores implícitos. Es probable que escribas algo como esto.

package main 

import "fmt" 

type Console struct { 
    X int 
    Y int 
} 

func NewConsole() *Console { 
    return &Console{X: 5} 
} 

var console Console = *NewConsole() 

func main() { 
    fmt.Println(console) 
} 

Salida:

{5 0} 
5

Go no tiene constructores automáticos. Normalmente, usted crea su propia función NewT() *T que realiza la inicialización necesaria. Pero tiene que ser llamado manualmente.