जवाबों:
main
आपके पैकेज में एक से अधिक नहीं हो सकते ।
आमतौर पर, आपके पास एक पैकेज में दिए गए नाम के साथ एक से अधिक फ़ंक्शन नहीं हो सकते हैं।
निकालें main
में test2.go
और आवेदन संकलित करें। demo
समारोह से दिखाई जाएगी test1.go
।
main
test2.go में हटाने के बाद निर्माण और चला सकता हूं, लेकिन go run test1.go
अभी भी test1.go का उपयोग करने में विफल रहा । क्यों ?
go run test1.go test2.go
डिफ़ॉल्ट लैंग द्वारा गो लैंग केवल उल्लिखित फ़ाइल बनाता / चलाता है। सभी फ़ाइलों को लिंक करने के लिए आपको दौड़ते समय सभी फाइलों का नाम निर्दिष्ट करना होगा।
नीचे दिए गए दो कमांड चलाएं:
$go run test1.go test2.go. //order of file doesn't matter
$go run *.go
यदि आप उन्हें बनाना चाहते हैं, तो आपको भी ऐसा ही करना चाहिए।
मैं उसी चीज की तलाश में था। आपके प्रश्न का उत्तर देने के लिए " टेस्ट 1 से टेस्ट 2 में डेमो कैसे कॉल करें? ", यहां मैंने इसे किया है। इस कोड को go run test1.go
कमांड के साथ चलाएं । बदले current_folder को फ़ोल्डर जहां test1.go है।
test1.go
package main
import (
L "./lib"
)
func main() {
L.Demo()
}
lib \ test2.go
सबफ़ोल्डर में test2.go फ़ाइल डालें lib
package lib
import "fmt"
// This func must be Exported, Capitalized, and comment added.
func Demo() {
fmt.Println("HI")
}
package lib; expected main
यदि आप बस चलाते हैं go run test1.go
और उस फ़ाइल में एक ही पैकेज में किसी अन्य फ़ाइल में एक फ़ंक्शन का संदर्भ होता है, तो यह त्रुटि देगा क्योंकि आपने पूरे पैकेज को चलाने के लिए गो को नहीं बताया था, आपने इसे केवल एक फ़ाइल चलाने के लिए कहा था।
आप फाइलों को समूचे पैकेज के रूप में चलाने के लिए कह सकते हैं, जो कई तरह से शुरू किए गए रन के पैकेज के रूप में है। यहां कुछ उदाहरण दिए गए हैं (यदि आपका टर्मिनल आपके पैकेज की निर्देशिका में है):
go run ./
या
go run test1.go test2.go
या
go run *.go
आप बिल्ड कमांड का उपयोग करके समान व्यवहार की उम्मीद कर सकते हैं, और निष्पादित निष्पादन योग्य चलाने के बाद एक समूहीकृत पैकेज के रूप में चलेगा, जहां फाइलें प्रत्येक मदर फ़ंक्शन के बारे में जानती हैं, उदाहरण:
go build ./
या
go build test1.go test2.go
या
go build *.go
और फिर बाद में कमांड लाइन से केवल निष्पादन योग्य को कॉल करना आपको रन कमांड का उपयोग करने के लिए एक समान आउटपुट देगा जब आप सभी फाइलों को एक पूरे पैकेज के रूप में एक साथ चलाते थे। उदाहरण के लिए:
./test1
या जो भी आपके निष्पादन योग्य नाम होता है, उसे उस समय कहा जाता है जब इसे बनाया गया था।
go fmt
? जैसे टर्मिनल में या क्या? यह कैसे दिखाता है कि वह किसी भी चीज़ की परवाह करता है?