2013-01-04 10 views
38

मैं लांग में किसी अन्य फ़ाइल से फ़ंक्शन कॉल करना चाहता हूं, क्या कोई भी मदद कर सकता है? test1.goभाषा में जाने के लिए किसी अन्य फ़ाइल से फ़ंक्शन कैसे कॉल करें?

package main 

func main() { 
    demo() 
} 

test2.go

package main 

import "fmt" 

func main() { 
} 

func demo() { 
    fmt.Println("HI") 
} 

कैसे test1 test2 से में डेमो कॉल करने के लिए?

+0

आप से क्या मतलब है सबफ़ोल्डर में test2.go फ़ाइल 'fmt' जाना ? टर्मिनल में क्या पसंद है या क्या? यह कैसे दिखाता है कि वह कुछ भी परवाह करता है? –

उत्तर

39

आपके पास अपने पैकेज में एक से अधिक main नहीं हो सकते हैं।

अधिक आम तौर पर, आपके पास पैकेज में किसी दिए गए नाम के साथ एक से अधिक फ़ंक्शन नहीं हो सकते हैं।

maintest2.go में निकालें और एप्लिकेशन को संकलित करें। demo फ़ंक्शन test1.go से दिखाई देगा।

+0

मैं test2.go में 'main' को हटाने के बाद बना और चला सकता हूं लेकिन अभी भी' go run test1.go' का उपयोग कर test1.go चलाने में विफल रहा। क्यूं कर ? –

+49

'चलाएं test1.go test2.go' –

+0

धन्यवाद डाइस्ट्रो! मैं "एफएमटी जाओ" उपयोग नहीं जानता था। –

9

डिफ़ॉल्ट रूप से गो लैंग केवल निर्दिष्ट फ़ाइल बनाता है/चलाता है। चलने के दौरान सभी फ़ाइलों का नाम निर्दिष्ट करने के लिए आपको उन सभी फ़ाइलों को लिंक करने के लिए आवश्यक है।

भागो दो आदेशों नीचे के दोनों:

$go run test1.go test2.go. //order of file doesn't matter 
$go run *.go 

आप समान बात क्या करना चाहिए अगर तुम उन्हें निर्माण करना चाहते हैं।

0

मैं वही चीज़ ढूंढ रहा था। अपने प्रश्न का उत्तर देने के लिए "test1 से test2 में डेमो कैसे कॉल करें?", यहां मैंने जिस तरह से किया है। go run test1.go कमांड के साथ इस कोड को चलाएं। current_folder से फ़ोल्डर जहां test1.go है बदलें।

test1.go

package main 

import (
    L "../current_folder/lib" 
) 

func main() { 
    L.Demo() 
} 

lib \ test2.go

रखें lib

package anyname 

import "fmt" 

// This func must be Exported, Capitalized, and comment added. 
func Demo() { 
    fmt.Println("HI") 
} 
+0

यह go1.9.2 विंडोज़/amd64 के साथ किया गया था – Zelenko

संबंधित मुद्दे

 संबंधित मुद्दे