गो

2014-11-26 10 views
6

पर एकाधिक मुख्य फ़ंक्शन होने के कारण पाइथन और Django डेवलपर के रूप में, मैं स्वतंत्र रूप से एक स्क्रिप्ट का उपयोग करके अपने प्रोजेक्ट में कोड का कोई भी टुकड़ा चला सकता हूं।गो

मुझे यह भी सुनिश्चित नहीं है कि गो में एक ही चीज़ कैसे प्राप्त की जाए, क्योंकि ऐसा लगता है कि प्रत्येक गो प्रोजेक्ट में केवल एक मुख्य निष्पादन योग्य फ़ाइल होनी चाहिए।

मैं अपने प्रोजेक्ट में cronjob से एक फ़ंक्शन कॉल करना चाहता हूं, लेकिन मुझे यह भी सुनिश्चित नहीं है कि इसे कैसे जोड़ा जाए। मेरे मुख्य समारोह में झंडे का उपयोग करना एकमात्र तरीका है जिसे मैं ऐसा करने के बारे में सोच सकता हूं। मेरी स्क्रिप्ट निम्नलिखित की तरह अपने आप में अतिरिक्त झंडे को स्वीकार करता है लेकिन यह बहुत भ्रामक दिखेगा:

go run server.go --debug --another-flag --script-name <MY-SCRIPT> --my-script-flag-one <FLAG-ONE> --my-script-flag-two <FLAG-TWO> 

वहाँ ऐसा करने का कोई भी सुरुचिपूर्ण रास्ता नहीं है?

+0

आप इस प्रश्न का उपयोगी हो सकते हैं: [क्या करने के लिए एक समझदार तरीका है

उदाहरण "hugo server --port=1313" में, 'server' कमांड

एक Command निम्नलिखित संरचना है है लेआउट ए गो प्रोजेक्ट] (http://stackoverflow.com/q/14867452/142162) –

+0

कोड का टुकड़ा पैकेज और कमांड बनाएं। उदाहरण के लिए, [क्या मेरे पास एक ही नाम के साथ लाइब्रेरी और बाइनरी हो सकती है?] (Http://stackoverflow.com/questions/14284375/can-i-have-a-library-and-binary-with-the-same- नाम/14284575) – peterSO

+0

कुछ भ्रम एक स्क्रिप्टिंग भाषा के रूप में जाने की सोच रहा है। 'रन रन' निश्चित रूप से छोटे परीक्षण के साथ खेलने के अलावा अन्य चीज़ों के लिए उपयोग नहीं किया जाना चाहिए, उदाहरण के लिए कुछ ऐसा जो आप अन्यथा play.golang.org' पर डालते हैं – Dustin

उत्तर

5

मैं जो एक उदाहरण परियोजना camlistore के रूप में दिखाता में "What is a sensible way to layout a Go project" लेख "Structuring Applications in Go", के संदर्भ हैं।
उस परियोजना में several cmd packages, प्रत्येक अपने स्वयं के विकल्पों के सेट के साथ शामिल है।

अन्य विकल्प spf13/cobra की तरह एक CLI इंटरफ़ेस पुस्तकालय, जो आपको कई आदेशों (समान exe, विकल्पों में से अलग सेट) को परिभाषित करने की अनुमति देता है का उपयोग करने के लिए होगा।

Command आवेदन का केंद्रीय बिंदु है।
प्रत्येक इंटरैक्शन जो एप्लिकेशन का समर्थन करता है उसे Command में निहित किया जाएगा।
एक कमांड में बच्चों के आदेश हो सकते हैं और वैकल्पिक रूप से एक क्रिया चला सकते हैं।

type Command struct { 
    Use string // The one-line usage message. 
    Short string // The short description shown in the 'help' output. 
    Long string // The long message shown in the 'help <this-command>' output. 
    Run func(cmd *Command, args []string) // Run runs the command. 
}