2011-11-28 51 views
18

我意識到Go沒有類,而是推動了結構的思想。結構的初始化函數

結構體是否有任何類型的初始化函數可以類似於類的__construct()函數調用?

實施例:

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) 

回答

39

Go沒有隱式構造函數。你可能會寫這樣的東西。

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) 
} 

輸出:

​​
5

Go沒有自動構造。通常,您可以創建自己的NewT() *T函數來執行必要的初始化。但它必須手動調用。