Go এ ফাইল নামগুলির জন্য কনভেনশনগুলি কী কী?


114

আমি গোতে প্যাকেজ নামকরণের জন্য কনভেনশনগুলি খুঁজে পেতে পারি: শব্দের মধ্যে কোনও আন্ডারস্কোর নয়, সমস্ত ছোট হাতের অক্ষর।

এই সম্মেলনটি ফাইলের নামগুলিতেও প্রযোজ্য?

আপনি কি একটি ফাইলে একটি স্ট্রাক্ট রেখেছেন যেন আপনি কোনও জাভা ক্লাসের জন্য করেছিলেন এবং তারপরে স্ট্রাকটির নামে ফাইলটির নাম রাখবেন?

বর্তমানে, যদি আমার কাছে স্ট্রাক্ট ওয়েব সার্ভার থাকে, তবে আমি এটি ফাইল_সেসার.গোতে রেখেছি।


3
এএফআইএকি-তে কোনও সম্মেলন নেই তবে _ প্রত্যয়গুলির ভবিষ্যতে বিশেষ শব্দার্থকতা থাকতে পারে তাই আমি এগুলি এড়াতে পরামর্শ দিই।
ফুজ

উত্তর:


126

অনুসরণ করার জন্য কয়েকটি গাইডলাইন রয়েছে।

  1. "" দিয়ে শুরু হওয়া ফাইলের নাম। বা "_" গো সরঞ্জাম দ্বারা উপেক্ষা করা হয়
  2. প্রত্যয় সহ ফাইলগুলি _test.goকেবল সংকলন করে go testসরঞ্জাম দ্বারা চালিত হয় ।
  3. ওএস এবং আর্কিটেকচার নির্দিষ্ট প্রত্যয়যুক্ত ফাইলগুলি স্বয়ংক্রিয়ভাবে সেই একই প্রতিবন্ধকতাগুলি অনুসরণ করে, উদাহরণস্বরূপ name_linux.goকেবল লিনাক্সের উপর নির্মিত name_amd64.goহবে, কেবলমাত্র amd64 এ তৈরি করবে। এটি //+build amd64ফাইলের শীর্ষে একটি লাইন থাকার সমান

go buildআরও বিশদে বিশদটির জন্য ডক্সটি দেখুন : https://golang.org/pkg/go/build/


3
এই নথিটি কোথায়? ধন্যবাদ!
অভিজিৎ রাস্তোগি

2
@AbhijeetRastogi: golang.org/pkg/go/build এবং golang.org/cmd/go
JimB

3
যদি আমি গড়তে চাই কি আমি উচিত না unixএবং others। যেমন আমি দুটি ফাইল তৈরি করতে পারি file_windows.goএবং file_others.go। এটা ভাল কাজ করে। তবে file_unix.goএবং file_others.goএটি কাজ করে না। আমি আটটি ফাইল তৈরি করতে চাই না darwin freebsg linux openbsd netbsd dragonfly solaris android
ইভান ব্ল্যাক

3
@ ফায়ার: ফাইলের নামগুলি সাধারণত সমস্ত ছোট হাতের অক্ষর হয়, উভয়ই ধারাবাহিকতার জন্য এবং কেস-সংবেদনশীল ফাইল সিস্টেমগুলির সিস্টেমগুলির জন্য।
জিমবি

1
@ ইভানব্ল্যাক একই প্রশ্নে যে কেউ, বিল্ড ট্যাগ ব্যবহার করে এটি সম্পন্ন করা যায়। এটি কীভাবে করা যায় তার জন্য একটি সুন্দর ওভারভিউয়ের
ইয়ান গুস্তাফসন

30

জিমবি প্রদত্ত উত্তরের পাশাপাশি , নিয়মিত ফাইলের নামগুলি হ'ল ছোট ছোট এবং কোনও ধরণের আন্ডারস্কোর বা স্পেস ছাড়াই হয়। সাধারণত ফাইলের নামগুলি প্যাকেজের নাম হিসাবে একই কনভেনশন অনুসরণ করে। কার্যকরী গো এর প্যাকেজ নাম বিভাগটি দেখুন ।

একটি ভাল উদাহরণের জন্য strconv প্যাকেজ দেখুন ।


3
আপনি দীর্ঘ ফাইল একটি নাম দিতে চান? mycommandsub1command.goবা my_command_sub1command.go, এবং কি সম্পর্কেmycommandVO
212.09 এ ব্যবহারকারী2727195

9
আমি দীর্ঘ নামের জন্য আন্ডারস্কোর পরামর্শ দেব। কিছু ভাল প্রকল্পে এটি দেখেছি।
আভি

17

আপনি কীভাবে কোনও প্যাকেজের মধ্যে আপনার কোডটি সংগঠিত করেন তার দিক দিয়ে গো পুরোপুরি উদার, এটি কীভাবে করা যায় তা শেখার সর্বোত্তম উপায় হ'ল মাস্টার্স অধ্যয়ন করা, মানে স্ট্যান্ডার্ড লাইব্রেরি হলেও ব্রাউজ করুন:

http://golang.org/src/pkg/

আমি অবশ্য ভাবতে পারি এমন 2 টি নিয়ম রয়েছে। কোডটি যখন বিভিন্ন প্ল্যাটফর্মের জন্য সংকলন করতে হবে নির্দিষ্ট করার সময়, আপনি প্ল্যাটফর্মের নামটি প্রত্যয় হিসাবে ব্যবহার করেন:

mypkg_linux.go         // only builds on linux systems
mypkg_windows_amd64.go // only builds on windows 64bit platforms

এছাড়াও যদি আপনার কাছে একটি ফাইল কল করা server.goথাকে তবে সেই ফাইলটির জন্য পরীক্ষাগুলি হবে server_test.go


3
আপনার প্রদত্ত লিঙ্কটিতে আমি আন্ডারস্কোরের সাথে মামলার ব্যবহারগুলি পেয়েছি: golang.org/src/pkg/compress/bzip2/move_to_front.go , golang.org/src/pkg/compress/flate/huffman_bit_writer.go , golang.org/ src / pkg / কম্প্রেস / ফ্ল্যাট / রিভার্স_বিট.গো
ডেভিড

1
আমার ধারণা তারা তখন ব্যবহার করবে না _front, _writerবা _bitsভবিষ্যতে তাত্পর্যপূর্ণ প্রত্যয় হিসাবে!
ম্যাট হ্যারিসন

আমি যেতে পছন্দ করি, তবে goপ্যাকেজ কাঠামো সম্পর্কে সরঞ্জামটি খুব সীমাবদ্ধ (এটি ভাষা সম্পর্কে আমার প্রিয় জিনিসগুলির মধ্যে একটি)। এটি কিছু খুব নির্দিষ্ট কনভেনশনগুলির পক্ষে (ফোল্ডারে প্রতি একটি প্যাকেজ [কমপক্ষে একটি ব্যতিক্রম সহ], ফোল্ডারের প্যাকেজটি ফোল্ডারটির মতো একই নাম ভাগ করে নেয় [কমপক্ষে একটি ব্যতিক্রম সহ), সম্পূর্ণ প্যাকেজ আমদানির পথটি আপেক্ষিক পথের সাথে মেলে $GOPATH, কিছু ফাইল রয়েছে তাদের নামের ফর্ম্যাট ইত্যাদির উপর নির্ভর করে আলাদা আচরণ করা হবে)
ওয়েবারসি 2

1
@ ওয়েবারসি 2 এই বিধিনিষেধগুলি লেটেক্সের সাথে সাদৃশ্যপূর্ণ। প্রথমত, আমি আমার লেআউট এবং অন্যান্য অপ্রাসঙ্গিক বিবরণগুলি নিয়ন্ত্রণ করতে চেয়েছিলাম, যতক্ষণ না বুঝেছি যে যা লিখতে হবে তা ভাল সামগ্রী। একইভাবে, গো আমাদের ভাল কোড লিখতে সক্ষম করে এবং আমাদের জন্য অন্যান্য বিবরণ পরিচালনা করে।
ডেভিড

@ ডেভিড আমি সম্মত পূর্ববর্তী ক্ষেত্রে আমি অস্পষ্ট ছিলাম: আমি উত্তরদাতার বক্তব্যের জবাব দিচ্ছিলাম Go is quite liberal in terms of how you organise your code within a package। গো উদার নয়, এটি বেশ সীমাবদ্ধ। তবে এটি একটি ভাল জিনিস।
weberc2

8

সাধারণত ফাইলনামের আন্ডারস্কোরটি প্ল্যাটফর্ম / আর্চ-কেবল কোড বরাদ্দ করতে ব্যবহৃত হয়, উদাহরণস্বরূপ:

 cd $GOROOT/src/pkg/math/
 ls sqrt*s
sqrt_386.s  sqrt_amd64p32.s  sqrt_amd64.s  sqrt_arm.s

sqrt_386.sকেবলমাত্র 32 বিট প্রসেসরের, sqrt_amd64.samd64 ইত্যাদিগুলিতে সংকলক দ্বারা পঠিত হবে ..

এটি GOOSএবং / অথবা GOARCH( রেফারেন্স ) এর বৈধ মানগুলির মধ্যে যে কোনও হতে পারে

file_windows_amd64.go কেবল উইন 64 এ সংকলিত হবে।

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