enum

2015-10-17 18 views
8

के रूप में निरंतर उपयोग करने के लिए फिर से प्रयास करने का एक तरीका है, मैं नीचे गोलांग में enum का उपयोग करने की कोशिश कर रहा हूं। मैं निरंतर मूल्यों की सूची में पुन: प्रयास करने का एक आसान तरीका खोजने के लिए संघर्ष कर रहा हूं। Enol के रूप में उपयोग निरंतर मूल्यों पर फिर से शुरू करने के लिए गोलांग में सामान्य अभ्यास क्या हैं। धन्यवाद!enum

type DayOfWeek int 
const(
     Monday DayOfWeek = iota 
     Tuesday 
     Wednesday 
     Thursday 
     Friday 
     Saturday 
     Sunday 
    ) 

जावा में, हम नीचे के रूप में पुन: सक्रिय कर सकते हैं।

public enum DayOfWeek { 
    MONDAY, 
    TUESDAY, 
    WEDNESDAY, 
    THURSDAY, 
    FRIDAY, 
    SATURDAY, 
    SUNDAY 
} 

for (DayOfWeek day: DayOfWeek.values()) { 
    // code logic 
} 
+5

सबसे पहले, सभी गो पहचानकर्ता आमतौर पर [मिश्रित कैप्स] (https://github.com/golang/go/wiki/CodeReviewComments#mixed-caps) में हैं, जिनमें स्थिरांक शामिल हैं। आप या तो एक साधारण लूप कर सकते हैं जैसे 'd: = सोमवार; डी <= रविवार; d ++ {} 'जहां आप प्रारंभ/समाप्ति मानों को स्पष्ट रूप से जानते हैं या आप उन लोगों के लिए उपनाम जोड़ सकते हैं (उदाहरण के लिए' firstDay = सोमवार; lastDay = Sunday') जैसे कुछ। यद्यपि ऐसा कुछ करने के लिए आगे बढ़ना संभव है जो 'रेंज' आईएमओ का उपयोग करेगा, यह बिल्कुल इसके लायक नहीं है। –

+0

वैसे, पहले से ही ['time.Weekday'] है (https://golang.org/pkg/time/#Weekday) जो 'समय' से आता है। शनिवार से' समय। शनिवार '। (बेशक आप बस सप्ताह के दिनों को एक मनमाना उदाहरण के रूप में रखना हुआ यह महत्वपूर्ण नहीं है)। –

+0

डेव, आपकी प्रतिक्रिया के लिए धन्यवाद। मैंने स्थिरांक के मामले को सही किया। मैं आम तौर पर सिर्फ सप्ताह के दिनों में आम तौर पर enums देख रहा हूँ। पहले दिन और आखिरी दिन मेरे लिए दिलचस्प लगता है। क्या यह कॉन्स सूचियों में जाना चाहिए या वे चर के बाहर हैं? धन्यवाद! –

उत्तर

7

,, कार्यावधि में नामित प्रकार के मूल्यों/उदाहरणों की गणना करने के लिए कि क्या चर या स्थिर जब तक आप विशेष रूप से एक टुकड़ा है कि उन्हें सूचियां निर्धारित कोई सीधा तरीका नहीं है। यह निश्चित या गणना प्रकार के उपयोगकर्ता तक छोड़ दिया जाता है।

package main 

import (
    "fmt" 
    "time" 
) 

var Weekdays = []time.Weekday{ 
    time.Sunday, 
    time.Monday, 
    time.Tuesday, 
    time.Wednesday, 
    time.Thursday, 
    time.Friday, 
    time.Saturday, 
} 

func main() { 
    for _, day := range Weekdays { 
      fmt.Println(day) 
    } 
} 

क्रमशः रनटाइम पर इस सूची को गतिशील रूप से उत्पन्न करने में सक्षम होने के लिए, उदा। प्रतिबिंब के माध्यम से, लिंकर को सभी संकुलों में परिभाषित सभी प्रतीकों को बनाए रखना होगा, जैसे जावा करता है। गोलांग-नट समूह ने इस पैकेज पर निर्यात किए गए नामों और कार्यों के बारे में चर्चा की, पैकेज निरंतर परिभाषाओं का एक सुपरसेट। https://groups.google.com/forum/#!topic/golang-nuts/M0ORoEU115o

इस सूची को संकलित समय पर इस सूची को उत्पन्न करने के लिए सिंटैक्टिक चीनी शामिल करना संभव होगा यदि केवल कार्यक्रम द्वारा संदर्भित किया गया हो। पुनरावृत्ति आदेश क्या होना चाहिए, यद्यपि? यदि आपका सप्ताह सोमवार को शुरू होता है तो मैंने परिभाषित सूची बहुत उपयोगी नहीं है; आपको सोमवार से रविवार तक के दिनों तक अपने स्वयं के टुकड़े को परिभाषित करना होगा।