2011-11-28 59 views
18

Tôi nhận ra rằng Go không có các lớp nhưng thay vào đó sẽ đưa ý tưởng về cấu trúc.chức năng init cho các cấu trúc

Các cấu trúc có bất kỳ loại hàm khởi tạo nào có thể được gọi tương tự như hàm __construct() của một lớp không?

Ví dụ:

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) 

Trả lời

39

Đi không có nhà thầu ngầm. Bạn có thể sẽ viết một cái gì đó như thế này.

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

Output:

{5 0} 
5

Go không có nhà thầu tự động. Thông thường, bạn tạo hàm NewT() *T của riêng bạn thực hiện khởi tạo cần thiết. Nhưng nó phải được gọi là thủ công.

Các vấn đề liên quan