enginedevops
enginedevops
خواندن ۸ دقیقه·۸ ماه پیش

چگونه با Golang شروع کنیم – نقشه راه توسعه دهنده

چگونه با Golang شروع کنیم – نقشه راه توسعه دهنده

📷

زبان برنامه نویسی Go – که با نام Golang نیز شناخته می شود – اکنون تقریباً 15 سال از عمر آن می گذرد. و به دلیل عملکرد و استفاده کارآمد از منابع، به یک انتخاب محبوب برای توسعه وب و میکروسرویس تبدیل شده است. مشاغل Go نیز کاملاً درآمد دارند. طبق گزارش Glassdoor، متوسط ​​حقوق یک توسعه دهنده Go در ایالات متحده حدود 103 هزار دلار است و می تواند تا 200 هزار دلار نیز برسد.

آماده اید تا سفر توسعه دهنده Go خود را آغاز کنید؟

این نقشه راه می تواند راهنمای شما باشد. در آن، من قصد دارم تا آنجا که می توانم نکاتی را بیان کنم. برای هر نکته، نظرات و مثال هایی را برای توضیح کامل آن درج کرده ام.

مراجع ارائه شده در پایان تمام نکات را پوشش می دهد.

در اینجا چیزی که می خواهیم پوشش دهیم:

چرا باید Go را یاد بگیرید؟

نحوه نصب Go

مبانی Go

مفاهیم پیشرفته

توسعه وب در Go

لاگ ها، تست، محک زدن، و اشکال زدایی

نحوه ساخت میکروسرویس های مقیاس پذیر

نحوه ساخت ابزارهای خط فرمان (CLI)

پروژه هایی برای تقویت مهارت های شما

گام بعدی؟

منابع

چرا باید Go را یاد بگیرید؟

Go اولین بار در اواخر سال 2009 معرفی شد. این یک زبان برنامه نویسی سطح بالا منبع باز، تایپ ایستا و کامپایل شده است که در گوگل طراحی شده است. این یک انتخاب محبوب برای ساخت سیستم های ایمن و مقیاس پذیر است.

طبق نظرسنجی سالانه StackOverflow، این یکی از محبوب ترین زبان های برنامه نویسی است. همچنین، در شاخص Tiobe 2024، Go در حال حاضر جایگاه یازدهم را دارد و هر سال جایگاه آن به طور پیوسته بهبود می یابد.

Go یک انتخاب محبوب برای ساخت سرویس ها و API های مقیاس پذیر و کارآمد است. به دلیل حافظه کم، کامپایل سریع و کارایی بالا، به طور گسترده برای معماری میکروسرویس ها استفاده می شود.

به دلیل پشتیبانی داخلی از همزمانی از طریق گوروتین ها و کانال ها، یک انتخاب محبوب برای توسعه بلاک چین است. برای مثال Ethereum و Hyperledger Fabric در Go نوشته شده اند.

نرم افزارهای مورد علاقه شما مانند Docker، Kubernetes، Hugo، GitHub CLI، Prometheus، Terraform و بسیاری دیگر نیز در Go نوشته شده اند.

و شرکت هایی مانند گوگل، متا، نتفلیکس و اوبر همگی از Go استفاده می کنند.

برای کسب اطلاعات بیشتر می توانید منابع زیر را بررسی کنید:

نحوه نصب Go

می توانید Go را به سیستم عامل مربوطه خود از اینجا نصب کنید.

نصب را با استفاده از دستور go version تست کنید:

اگر با خطا مواجه شدید، متغیرهای محیط را بررسی کنید.

مبانی Go

ابتدا، بیایید با درک نحو اصلی اجرای یک برنامه Go شروع کنیم. برنامه از بسته اصلی و تابع اصلی شروع می شود. فایل ها با پسوند .go ذخیره می شوند.

در Go، یک بسته یک واحد اساسی برای ساختاردهی و مدیریت کد است. برای وارد کردن هر بسته ای می توانید از کلمه کلیدی import استفاده کنید. به عنوان مثال، برای چاپ می توانید از بسته fmt یا log استفاده کنید.

این یک برنامه ساده برای چاپ پیام در Go است:

📷

برای اجرای برنامه از go run <filename>.go استفاده کنید.

اکنون، می توانید شروع به یادگیری در مورد موضوعات زیر کنید:

  • Basic Data types: int, float, bool, string, array
  • Reference Data types: channel, map, slices
  • Variables and Constants
  • Conditional Statements: if, if else, switch
  • Iteration Statement: for (only “for” is available, no “while”)
  • Type Casting and Inference: there is no implicit type conversion available
  • Export Function: Exporting a function is done by capitalising its first letter
  • Module: Initialising the module. Learn commands under go mod.
  • Importing third party packages: Using go get <gitrepo_url>.git
  • Basic keywords: makenewrangedefer

📷

بسیاری از این مفاهیم در این راهنمای مبتدی پوشش داده شده است. و اگر می‌خواهید حتی عمیق‌تریاد بگیرید، در اینجا یک کتابچه راهنمای کامل است که مفاهیم اولیه Go را با جزئیات پوشش می‌دهد.

مفاهیم پیشرفته

برای استفاده از پتانسیل Go برای ایجاد یک سیستم مقیاس پذیر و توزیع شده، داشتن درک کامل از ویژگی های اصلی آن ضروری است.

اینها ویژگی های اصلی Go هستند:

  • Functions & Packages
  • Concurrency and Goroutines
  • Channels
  • Context Management
  • Error Handling
  • Pointers and Memory Management
  • Garbage Collection (You can tweak default GC to get a performance boost)
  • Concurrency Patterns
  • Mutexes
  • Waitgroups

📷

توسعه وب در Go

با یک کتابخانه استاندارد غنی، همزمانی داخلی و عملکرد عالی، Go یک انتخاب ایده آل برای توسعه وب است. اکوسیستم Go فراتر از بسته های داخلی خود، انواع چارچوب ها و بسته های توسعه وب را برای انتخاب ارائه می دهد.

در اینجا برخی از فریمورک ها و بسته های شناخته شده آورده شده است:

همه فریمورک های شناخته شده ای هستند و می توانید با هر کدام از آنها شروع کنید. تعداد کمی از الگوی net/http پیروی می کنند و تعداد کمی از فریم ورک های Express یا دیگر الهام گرفته شده اند.

لاگ ها ، تست، محک زدن، و اشکال زدایی – Logging, Testing, Benchmarking, and Debugging

این زبان یک گزارش بسته گزارش جامع برای نظارت موثر و همچنین یک بسته تست و محک داخلی را فراهم می کند. شما باید تکنیک های اشکال زدایی موثر را برای شناسایی و حل مسائل در کد درک کنید.

Logging in Go

بسته log استاندارد یک نقطه شروع عالی است. به راحتی قابل تنظیم است تا مسیر فایل، نوع گزارش، و هر پیام سفارشی را در پیام گزارش وارد کند. علاوه بر این، بسیاری از لاگرها در دسترس هستند. این لاگرها از استانداردهای صنعت لاگ ها پیروی می کنند و در مقایسه با بسته log استاندارد عملکرد بالایی دارند.

در اینجا برخی از لاگرهای موجود آورده شده است:

Testing and Benchmarking in Go

تست چارچوب تست داخلی برای نوشتن تست ها و معیارها پشتیبانی می کند.

دستور go test برای اجرای تست ها و معیارها استفاده می شود. می توانید تست ها و معیارها را در فایلی که به _test.go ختم می شود اضافه کنید.

برای نوشتن یک تست، از testing.T استفاده کنید و از قرارداد نامگذاری تابع TestXxx پیروی کنید.

به عنوان مثال، برای نوشتن یک تست برای تابع fibonaci، نام تابع تست آن TestFibonaci خواهد بود که Test کلمه کلیدی است که به کامپایلر Go می گوید که یک تابع آزمایشی است و Fibonaci نام تابع است. به یاد داشته باشید که حرف اول نام تابع تست، Fibonaci را با حروف بزرگ بنویسید.

در اینجا می‌توانید درباره افزودن تست‌ها به کد Go خود بیشتر بخوانید.

اگر به عملکردهای بیشتر عادت دارید، می توانید بسته testify را امتحان کنید. این یک بسته خارجی است که خوانایی موارد تست را بهبود می بخشد. در داخل از بسته تست داخلی استفاده می شود.

Debugging in Go

Delve یک دیباگر قدرتمند برای Go است. به راحتی با IDE های محبوب مانند Visual Studio Code، Goland by JetBrains، Neovim، Atom و غیره ادغام می شود.

شما می توانید از بسته داخلی pprof برای تجزیه و تحلیل و شناسایی تنگناهای عملکرد و مشکلات استفاده از حافظه استفاده کنید. مسیر آن net/http/pprof است

نحوه ساخت میکروسرویس های مقیاس پذیر

ساخت میکروسرویس های مقیاس پذیر به ترکیبی از معماری متفکرانه، شیوه های کدگذاری کارآمد و ابزار قوی نیاز دارد. مدل همزمانی سبک وزن، زمان اجرا کارآمد و کتابخانه استاندارد غنی می‌تواند بارهای ترافیکی بالا را مدیریت کند و به صورت افقی مقیاس‌بندی شود، که آن را به انتخابی ایده‌آل برای میکروسرویس‌ها تبدیل می‌کند.

در زیر چند موضوع وجود دارد که می توانید با آنها شروع کنید:

نحوه ساخت ابزارهای خط فرمان (CLI)

وقتی صحبت از CLI ها می شود، Go یک ستاره راک است. بسته‌هایی در Go وجود دارد که به راحتی می‌توانید CLI را بسازید. flag  را می توان برای ساختن CLI اصلی استفاده کرد.

بسته  Cobra برای ایجاد برنامه های قدرتمند مدرن CLI بسیار محبوب است. بسیاری از پروژه های Go مانند GitHub CLI، Hugo و Kubernetes از Cobra استفاده می کنند.

در اینجا چند پروژه CLI وجود دارد که می توانید برای تمرین بسازید:

Task Manager: یک مدیر وظیفه مبتنی بر CLI ایجاد کنید که به عملیات CRUD اجازه می دهد.

Notes: یک CLI برای یادداشت برداری بسازید.

Password Manager:  یک CLI ایجاد کنید که رمزهای عبور را با رمزگذاری مناسب، تولید و بازیابی رمز عبور ذخیره و مدیریت کند.

Universal Conversion Tool: یک مبدل جهانی بسازید که می تواند تمام معیارها و ارز را تبدیل کند.

پروژه هایی برای تقویت مهارت های  شما

برای درک بیشتر در مورد قابلیت های Go، می توانید با ساخت پروژه ها تجربه عملی عملی کسب کنید.

در اینجا لیستی از پروژه هایی وجود دارد که می توانید در Go بسازید:

  • Todo application
  • Chat Application
  • CLI
  • Microservices which communicate using gRPC
  • Containerizing a Go application
  • Create a blogging website
  • Webscraper using net/http and goquery package
  • Rate limiter
  • Email Template generator using template package

گام بعدی

برای گام های بعدی خود می توانید این نقشه راه شگفت انگیز Go را که توسط Kamran ساخته شده است دنبال کنید.

📷

منبع: https://enginedevops.com/2024/05/01/%d9%86%d9%82%d8%b4%d9%87-%d8%b1%d8%a7%d9%87-%d8%aa%d9%88%d8%b3%d8%b9%d9%87-%d8%af%d9%87%d9%86%d8%af%d9%87-%da%af%d9%88%d9%84%d9%86%da%af/

توسعه دهنده
شاید از این پست‌ها خوشتان بیاید