2016-01-02 16 views
5

Trong Go, chúng ta hãy nói rằng tôi có struct này:Thiết lập giá trị ban đầu của một trường struct đó của người khác tại Gò

type Job struct { 
    totalTime int 
    timeToCompletion int 
} 

và tôi khởi tạo một đối tượng struct như:

j := Job {totalTime : 10, timeToCompletion : 10} 

nơi ràng buộc là timeToCompletion luôn bằng totalTime khi cấu trúc được tạo (chúng có thể thay đổi sau). Có cách nào để đạt được điều này trong Go để tôi không phải khởi tạo cả hai trường?

Trả lời

6

Bạn không thể tránh được việc phải xác định giá trị gấp đôi, nhưng một cách thành ngữ sẽ được tạo một hàm tạo constructor như cho nó:

func NewJob(time int) Job { 
    return Job{totalTime: time, timeToCompletion: time} 
} 

Và sử dụng nó, bạn chỉ cần xác định thời gian giá trị một lần khi chuyển nó đến chức năng NewJob() của chúng tôi:

j := NewJob(10) 
+0

Hoàn hảo, tôi đã tìm kiếm một thành ngữ như vậy nếu không có cách nào sẵn có. – talonx

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