মূল প্যাকেজের একাধিক ফাইল সহ আমি কীভাবে একটি প্রকল্প "চালাতে" পারি?


150

আমার কাছে বর্তমানে আমার প্রধান প্যাকেজটিতে একটি ফাইল রয়েছে main.gomain.goপৃথক প্যাকেজ তৈরি না করে আমি কীভাবে একাধিক ফাইলে বিষয়বস্তুগুলিকে বিভক্ত করব কারণ কোডটি পুনরায় ব্যবহারযোগ্য নয়।

আমি এর মতো একটি ডিরেক্টরি কাঠামো চাই:

$ ls foo

main.go
bar.go

bar.go

package main

import "fmt"

func Bar() {
    fmt.Println("Bar")
}

তারপরে main.go

package main

func main() {
    Bar()
}

তবে go run main.goআমাকে দেয়:

# command-line-arguments
./main.go:4:2: undefined: Bar

উত্তর:


204

26 জুলাই 2019 আপডেট করুন (যাওয়ার জন্য> = 1.11)

go run .

আসল উত্তর

উপরের কোডটি আসলে কাজ করে। সমস্যাটি আমার চালানো দরকার ছিল

go run *.go

পরিবর্তে

go run main.go

6
যদি না আপনি *_test.goআপনার ফোল্ডারে। তারপরে আপনার (1) shopt -s ext globএবং (2) দরকার go run !(*_test).go
7:30 এ ওয়েবেফোর্ডস্ট্যাক এক্সচেঞ্জ

আর অ্যাপেনজিন ব্যবহারকারীদের কী হবে?
goodies4uall

আমি চেষ্টা করেছি go run ./cmd/myCmd/...এবং এটি আমার পক্ষে কাজ করেছে। _test.goফাইল আছে যখন এই সঠিক উপায় হতে পারে ?
ভিনগার্চিয়া

go run ../your_folderওয়ার্কিং ফোল্ডারটি ভিতরে থেকে আমার পক্ষে কাজ করে
অ্যান্ডি

3
কেবলমাত্র করুনgo run .
বার্থেসসিম্পসন

66

আপডেট আগস্ট 2018, সঙ্গে যান 1.11 , একটি অধ্যায় "চালান" পদ বলে:

go runকমান্ড এখন একটি একক আমদানি পাথ, একটি ডিরেক্টরি নাম বা একটি একক প্যাকেজ মিলে একটি প্যাটার্ন পারেন।
এটি অনুমতি দেয় go run pkgবা go run dir, সবচেয়ে গুরুত্বপূর্ণgo run .


আসল উত্তর জানুয়ারী 2015

যেমন " একাধিক ফাইল সমন্বিত গো প্রোগ্রামটি কীভাবে সংকলন করা যায়? " তে উল্লিখিত হিসাবে go run, ফাইলগুলির একটি তালিকা প্রত্যাশা করে, যেহেতু এটি " mainগো সোর্স ফাইলগুলি সমন্বিত প্যাকেজটি সংকলন করে এবং চালায় "।
সুতরাং আপনি অবশ্যই আপনার mainপ্যাকেজটি বেশ কয়েকটি ফাইলগুলিতে বিভক্ত করতে পারেন go run

এটি পৃথক go build/go installযা প্যাকেজের নাম আশা করে (এবং ফাইলের নাম নয়)।
একটি সাধারণ go buildপ্যারেন্ট ফোল্ডারের নাম অনুসারে একটি এক্সিকিউটেবল উত্পাদন করে।

মনে রাখবেন, এই থ্রেড দ্বারা চিত্রিত হিসাবে , go run *.goউইন্ডোজ সিএমডি সেশনে কোনও কাজ করবে না, যেহেতু শেলটি ওয়াইল্ডকার্ড সম্প্রসারণ করে না


1
runউইন্ডোজ কমান্ড প্রম্পট ব্যবহার করে একাধিক গো ফাইল চালানোর জন্য কি কোনও কার্যকারিতা রয়েছে ?
লুক

1
ধন্যবাদ! এটি আমাকে এক টন সহায়তা করেছে। আমি ভাবছিলাম যে আমি কেন কেবল মূল পয়েন্ট দিয়ে কোডটি চালাতে পারছি না কারণ এটি একই প্যাকেজটি ছিল তবে এটি কেন তাদের অনুমতি দেয়নি তা এই ধরণের আমার কাছে বোধগম্য।
ক্রিস

4

উল্লিখিত হিসাবে, আপনি বলতে পারেন go run *.goতবে উইন্ডোজের জন্য আপনি কেবল স্ক্রিপ্ট ফাইলগুলি তালিকাবদ্ধ করতে পারেন (যেহেতু * .গো কাজ করবে না) -go run main.go other.go third.go


3

আমার মতে, এই প্রশ্নের সেরা উত্তর শীর্ষের মন্তব্যে লুকিয়ে আছে hidden

কেবল এটি চালান:

go run .

এটি মুখ্য প্যাকেজে সমস্ত ফাইল চালাবে, তবে ত্রুটি বার্তা দেওয়ার মতো হবে না

go run: cannot run *_test.go files (main_test.go)

@ বার্থসসিম্পসন থেকে কুদোস


0

উইন্ডোজের জন্য সাইগউইন ইনস্টল করুন এবং কমান্ড প্রম্পটের পরিবর্তে এটি ব্যবহার করুন। "go রান * .গো" তখন কাজ করবে।


আমি এটির জন্য মিনজিডাব্লু পরামর্শ দেব, তবে আপনি যদি আমাকে জিজ্ঞাসা করেন তবে পদ্ধতির সঠিক right আমি সন্দেহ করি যে কেউ আবেগের সাথে সত্যই সংযুক্ত থাকতে পারেcmd.exe
আলেকসান্দ্র ক্রেভেটস

0

আপনি যদি সর্বশেষ সংস্করণ (1.11) অনুসারে যান গরিলা ম্যাক্স ব্যবহার করে লোকালহোস্টে একাধিক ফাইল চালানোর চেষ্টা করছেন। নিম্নলিখিত 2 কমান্ডের যে কোনও একটি ব্যবহার করার চেষ্টা করুন।

  1. && ফোল্ডার নাম-পোর্ট 8081 ইনস্টল করুন।

  2. বিল্ড এন্ড অ্যান্ড। / ফোল্ডারনাম -পোর্ট 8081 যান।

টার্মিনালে কমান্ডটি প্রয়োগ করার আগে আপনি সোর্স ফোল্ডারে অর্থাৎ go / src / FolderName এ আছেন তা নিশ্চিত করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.