
در برنامه نویسی Go، بسته ها یکی از قدرتمندترین ویژگی ها هستند. بستهها با گروهبندی آنها در واحدهای مجزا به نگهداری تعداد زیادی از برنامهها کمک میکنند. این کار نگهداری کد را بسیار ساده تر می کند. این رویکرد ماژولار همچنین امکان اشتراک گذاری کد و استفاده مجدد بهتر را فراهم می کند.
در این راهنما خواهیم کرد در مورد نوشتن بسته های Go خود و پیاده سازی آنها در پروژه های خود بیاموزید.
پیش نیازها
این آموزش فرض می کند که شما پیش نیازهای زیر را دارید:
- یک سیستم لینوکس با پیکربندی مناسب (سرور اوبونتو، در این مورد). درباره راه اندازی سرور اوبونتو شخصی خود در CloudSigma بیشتر بیاموزید.
- یک محیط برنامه نویسی Go با پیکربندی مناسب (نصب آخرین Go، پیکربندی متغیرهای محیط و غیره). درباره نصب Go در اوبونتو 20.04 بیشتر بدانید.
- ویرایشگر متن مدرن با ویژگی های کیفیت زندگی مانند برجسته کردن کد. به عنوان مثال، Atom، VS Code، Brackets، Sublime Text، Vim و غیره. برای این راهنما، VS Code ویرایشگر متن انتخابی ما خواهد بود.
مرحله 1 – یک پروژه Go جدید ایجاد کنید
برای نمایش، بهترین گزینه یک پروژه ساختگی است. این به ما اجازه می دهد تا کدهای خود را بدون به خطر انداختن کدهای مهم آزمایش کنیم.
ابتدا یک دایرکتوری اختصاصی جدید برای پروژه Dummy Go ما ایجاد کنید:
mkdir -pv نمونه-برو-پروژه && سی دی نمونه-برو-پروژه/
mkdir –pv نمونه–من دارم میروم–پروژه && سی دی نمونه–من دارم میروم–پروژه/ |
در پوشه پروژه، دستور Go زیر را اجرا کنید:
برو مود init example.com/dummy
من دارم میروم مد در او مثال.com/ساختگی |
اینجا،
- را
من دارم میروم مد در او بخشی از دستور مسئول ایجاد یک پروژه Go در دایرکتوری فعلی است (
نمونه–من دارم میروم–پروژهسپس). - را
مثال.com/ساختگی بخشی از دستور مسیر مجازی پروژه را توصیف می کند. این جاده از نظر فیزیکی وجود ندارد. با این حال، هنگامی که در مورد مکان بسته ها در پروژه صحبت می شود، این مهم خواهد بود.
توجه داشته باشید که معمولاً از شما انتظار میرود که پروژههای Go خود را تحت موقعیت مکانی ایجاد کنید
$GOPATH/src.
از خط فرمان، VS Code را اجرا کنید:
VS Code با دایرکتوری فعلی به عنوان یک پروژه برخورد می کند و مانند آن عمل می کند. توجه داشته باشید که پروژه Go حاوی یک فایل است
من دارم میروم.مد. این شامل مسیر مجازی است
مثال.com/ساختگی قبلا توضیح دادیم این فایل به جای استفاده از مسیر فیزیکی آن در فایل سیستم به محل پروژه Go در مسیر مجازی اشاره می کند.
مرحله 2 – یک برنامه Go ساده ایجاد کنید
در مرحله بعد، پروژه را با یک برنامه Go ساده پر می کنیم. یک فایل جدید ایجاد کنید
اصلی.من دارم میروم.
کد زیر را وارد کنید:
بسته اصلی import (“fmt”) func main() {fmt.Println(“Hello world”)}
بسته بندی اصلی وارد كردن ( “fmt” ) تابع اصلی() { fmt.Println(“سلام دنیا”) } |
اینجا،
- پرونده
اصلی.من دارم میروم به عنوان نقطه ورود برای پروژه ما در نظر گرفته می شود:- در خود گنجانده است
اصلی بسته بندی - او میزبان است
اصلی() عملکرد.
- در خود گنجانده است
هنگام اجرا، خروجی مورد انتظار خروجی متنی به صفحه کنسول است (
“سلام دنیا”). از دایرکتوری پروژه، دستور زیر را اجرا کنید:
برو نقطه ورود به پروژه را پیدا می کند (
اصلی میزبانی بسته از
اصلی() تابع) و پروژه را اجرا کنید.
مرحله 3 – دایرکتوری بسته
یک فایل دیگر ایجاد کنید
یکی دیگر.من دارم میروم در همان دایرکتوری پروژه و کد زیر را وارد کنید:
نام بسته var Name = “Jordan”
بسته بندی نام ها var نام = “اردن” |
سپس سعی کنید پروژه را اجرا کنید:
مفسر Go خطایی ایجاد می کند که توصیف می کند دو بسته وجود دارد (
نام ها که در
یکی دیگر.من دارم میروم و
اصلی که در
اصلی.من دارم میروم) در همان دایرکتوری. این به این دلیل است که فقط یک بسته می تواند در یک دایرکتوری وجود داشته باشد:
بیایید این را درست کنیم! نام بسته را به تغییر دهید
یکی دیگر.من دارم میروم به
اصلی:
نام متغیر اصلی بسته = “جردن”
بسته بندی اصلی var نام = “اردن” |
بررسی کنید که پروژه در حال حاضر به درستی کار می کند:
توجه داشته باشید که ما متغیر جهانی را پیاده سازی نکردیم
نام در هر نقطه از پروژه ما تغییر دادن
fmt.Println() تابع ج
اصلی.من دارم میروم برای چاپ مقدار متغیر:
import (“fmt”) func main() {fmt.Println(“hello”, Name)}
وارد كردن ( “fmt” ) تابع اصلی() { fmt.Println(“سلام”، نام) } |
اجرای پروژه:
تا به حال چه آموخته ایم؟
- فقط یک بسته می تواند در یک دایرکتوری وجود داشته باشد.
- متغیرها، توابع، ساختارها و غیره اعلام شده در یک فایل بسته برای سایر فایل های بسته در دسترس هستند.
- Go مفهوم اصلاح کننده های محدوده مانند را ندارد
عمومی،
خصوصی،
حفاظت شدهو غیره. در عوض، متغیرها، توابع، ساختارها و غیره را با حروف بزرگ مینویسد. متغیر
نام برای نشان دادن اینکه مجاز است در سطح جهانی در دسترس باشد، با حروف بزرگ نوشته شده است.
مرحله 4 – یک بسته فرعی ایجاد کنید
داشتن بسته های متعدد در یک پروژه Go (مخصوصاً بسته های بزرگتر و پیچیده تر) امری متداول و مورد انتظار است. با این حال، فقط یک بسته می تواند در یک فهرست وجود داشته باشد. در نسخه ی نمایشی ما، بسته هسته از دایرکتوری ریشه پروژه می گذرد. چگونه می توان چندین بسته را در یک پروژه مستقر کرد؟
ما می توانیم با ایجاد زیر شاخه های جدید در پروژه به این مهم دست یابیم. هر زیر شاخه می تواند به عنوان یک بسته اضافی برای پروژه عمل کند. حتی این زیرمجموعه ها می توانند زیر شاخه های خود را داشته باشند (و البته بسته ها).
برای نشان دادن این موضوع، یک زیر شاخه جدید به نام ایجاد می کنیم
نشست–کارگردان تحت دایرکتوری پروژه
نمونه–من دارم میروم–پروژه. سلسله مراتب به شکل زیر خواهد بود:
در فهرست، یک فایل Go جدید ایجاد کنید
نشست–کارگردان–1. برو:
package subdir var TypingPractice = “روباه قهوه ای سریع از روی سگ تنبل می پرد”
بسته بندی زیر انداز var تایپ تمرین = “روباه قهوه ای سریع از روی سگ تنبل می پرد” |
در اینجا ما بسته جدید را نام گذاری کرده ایم
زیر انداز. اجرای پروژه:
مرحله 5 – بسته جدید را در پروژه اصلی مستقر کنید
اکنون باید یاد بگیریم که چگونه بسته جدید ایجاد شده را اضافه کنیم (
زیر انداز) در پروژه اصلی (
اصلی.من دارم میروم). این مستلزم استفاده از
وارد كردن عبارت برای لیست کردن تمام بسته هایی که می خواهیم به پروژه وارد کنیم.
به روز رسانی
اصلی.من دارم میروم با کد زیر:
بسته اصلی import (“fmt” “example.com/dummy/sub-dir”) func main() { fmt.Println(“hello”, Name) fmt.Println(subdir.TypingPractice) }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | بسته بندی اصلی وارد كردن ( “fmt” “example.com/dummy/sub-dir” ) تابع اصلی() { fmt.Println(“سلام”، نام) fmt.Println(زیر برش.تایپ تمرین) } |
اجرای پروژه:
اینجا،
- ما بسته را وارد کرده ایم
زیر برش و مقدار متغیر نامیده می شود
تایپ تمرین (
زیر برش.تایپ تمرین). - مسیر بسته جالب ترین است:
- بخش
مثال.com/ساختگی مسیر مجازی برای دایرکتوری ریشه پروژه است (تعریف شده در
من دارم میروم.مد فایل). - با این حال، بقیه راه
نشست–کارگردان مسیر فیزیکی مکان بسته است. این نام بسته نیست، بلکه نام دایرکتوری است که میزبان آن است
زیر برش بسته بندی - مسیر بسته شامل مکان های مجازی و فیزیکی بسته مورد نظر است.
- بخش
مرحله 6 – نام بسته را تغییر دهید
دایرکتوری زیر برش در حال حاضر میزبان بسته است
زیر برش با یک فایل (
نشست–کارگردان–1. برو). اگر بخواهیم نام بسته را از آن تغییر دهیم چه می شود
زیر برش به چیز دیگری؟
برای تغییر نام بسته، نام بسته باید از هر فایل Go جداگانه در بسته تغییر کند. در مثال ما فقط باید تغییر کنیم
نشست–کارگردان–1. برو برای تغییر نام بسته با این حال، اگر فایل های بیشتری وجود دارد، نام بسته باید در همه آنها به روز شود. در غیر این صورت پروژه به درستی اجرا نمی شود.
برای تغییر نام بسته از
زیر برش وارد کردن، به روز رسانی
نشست–کارگردان–1. برو به شرح زیر است:
تایپ دسته ای var TypingPractice = “روباه قهوه ای سریع از روی سگ تنبل می پرد”
بسته بندی نوشتن var تایپ تمرین = “روباه قهوه ای سریع از روی سگ تنبل می پرد” |
به روز رسانی
اصلی.من دارم میروم برای منعکس کردن این تغییر:
بسته اصلی import ( “fmt” تایپ “example.com/dummy/sub-dir” ) func main() { fmt.Println(“hello”, Name) fmt.Println(typing.TypingPractice) }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | بسته بندی اصلی وارد كردن ( “fmt” نوشتن “example.com/dummy/sub-dir” ) تابع اصلی() { fmt.Println(“سلام”، نام) fmt.Println(نوشتن.تایپ تمرین) } |
توجه داشته باشید که وارد کردن نام مستعار اضافی به طور خودکار توسط VS Code ایجاد می شود. کد بدون آن کار خواهد کرد (اگر بخواهید آن را حذف کنید).
زمان تست تغییرات است. برای مشاهده موفقیت آمیز بودن تغییرات، پروژه را اجرا کنید:
افکار نهایی
نوشتن یک بسته Go یک کار ساده است. یک بسته شامل تمام فایل های Go در یک فهرست است. با این حال، ممکن است زیر شاخه هایی داشته باشد که بسته های اضافی را میزبانی می کنند. این راهنما با موفقیت نشان می دهد که چگونه بسته های Go خود را بنویسید و آنها را در پروژه خود مستقر کنید. همچنین به طور خلاصه کنترل دامنه متغیرها، توابع و غیره را نشان می دهد. حروف بزرگ روی برچسب آنها.
آیا شما یک توسعه دهنده Go هستید؟ CloudSigma API اکنون برای پیاده سازی در برنامه نویسی Go در دسترس است. از این لینک میتوانید درباره CloudSigma API اطلاعات بیشتری کسب کنید.
کار کامپیوتر مبارک!

درباره آکشی ناگپال
علاقه مندان به تجزیه و تحلیل داده های بزرگ و یادگیری ماشین.