2016-01-02 12 views
5

में एक और की है कि एक struct क्षेत्र का प्रारंभिक मूल्य की स्थापना जाओ में, मान लें कि मैं इस struct डालते हैं बाधा यह है कि जब संरचना बनाई जाती है तो वे timeToCompletion हमेशा totalTime के बराबर होते हैं (वे बाद में बदल सकते हैं)। क्या गो में इसे हासिल करने का कोई तरीका है ताकि मुझे दोनों क्षेत्रों को शुरू करने की आवश्यकता न हो?जाओ

उत्तर

6

आप मूल्य दो बार निर्दिष्ट करने के लिए होने से बचने नहीं कर सकते, लेकिन एक मुहावरेदार तरह से इसके लिए एक निर्माता की तरह निर्माता समारोह बनाने के लिए किया जाएगा: इसे का उपयोग

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

और आप केवल समय निर्दिष्ट करना जब यह हमारे NewJob() कार्य करने के लिए पारित करने के लिए एक बार मूल्य:

j := NewJob(10) 
+0

बिल्कुल सही है, मैं इस तरह के एक मुहावरा लिए देख रहा था अगर वहाँ था कोई इनबिल्ट रास्ता। – talonx