GO زبان برنامه‌نویسی‌ای است که زاییده نوعی سردرگمی و نامیدی در گوگل محسوب می‌شود. جایی که توسعه‌دهندگان یا بایستی زبانی را انتخاب می‌کردند که به شکل بهینه اجرا می‌شد و زمان زیادی برای کامپایل لازم داشت و یا اینکه زبان انتخابی‌شان برای برنامه‌نویسی بسیار ساده بود، ولی در هنگام اجرا بهینه‌سازی لازم را نداشت. به همین دلیل، زبان برنامه‌نویسی GO ابداع و طراحی شد تا همزمان هر سه مزیّت را داشته باشد. یعنی کامپایل‌ سریع، راحتیِ برنامه‌نویسی و اجرای بهینه در مرحله تولید.

در حالی که زبان برنامه‌نویسی GO برای پروژه‌های مختلف انعطاف‌پذیری زیادی دارد، ولی در عین حال، برای برنامه‌‌های سیستم گسترده و شبکه بسیار مناسب است و شهرتی با عنوان «زبان برنامه‌نویسی ابری» برای خود رقم زده است. تمرکز این زبان بر کمک به برنامه‌نویسان مدرن برای کارآیی بیشتر با استفاده از مجموعه ابزارهای قدرتمند، رفع مشکلات فرمت‌بندی با وارد فرمت به عنوان بخشی از زبان برنامه‌نویسی، و همین‌طور، بکارگیری ساده نتیجه کار با کامپایل در یک فایل باینری است. یادگیری زبان برنامه‌نویسی GO بسیار ساده است و با مجموعه‌ای کوچک از کلید‌واژه، گزینه‌ای مناسب برای تازه‌کاران و همین‌طور، توسعه‌دهندگان باتجربه محسوب می‌شود.

در این آموزش، به سراغ نحوه نصب و تنظیم یک محیط برنامه‌نویسی با GO از طریق خط فرمان می‌رویم. روند کار برای سیستم‌عامل اوبونتو 18.04 طرح‌ریزی شده، امّا اصول کلی آن می‌تواند برای توزیع‌های لینوکس دبیان نیز می‌تواند  به کار گرفته شود.

پیش‌نیازها

برای دنبال‌کردن مراحل این آموزش به یک کامپیوتر یا ماشین مجازی همراه با نصب اوبونتو 18.04  احتیاج خواهید داشت. همچنین باید دسترسی مدیریتی به این سیستم و اتصال اینترنت نیز در اختیار داشته باشید. می‌توانید این سیستم‌عامل از صفحه نسخه‌های اوبونتو 18.04 دریافت کنید.

گام ۱) نصب زبان برنامه‌نویسی GO

در این مرحله، با دریافت آخرین نسخه از صفحه رسمی GO، این  ابزار را نصب خواهید کرد.

برای این منظور، ابتدا می‌بایست آدرس اینترنتی فایل tarball نسخه باینری را پیدا کنید. همچنین باید SHA256 hash کنار آن را یادداشت کنید. چرا که در برای تأیید فایل دانلود شده به آن نیاز خواهید داشت.

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

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

در اوبونتو 18.04 با کلیک بر روی آیکون اوبونتو در گوشه سمت چپ صفحه، برنامه ترمینال را پیدا کنید. در همین حال، می‌توانید کلمه terminal را در نوار جستجو تایپ نمایید. روی آیکون اپلیکیشن ترمینال کلیک کنید تا باز شود. هخمچنین می‌توانید با فشردن همزمان کلیدهای CTRL، ALT و T، این برنامه را به صورت خودکار باز کنید.

ترمینال اوبونتو

ترمینال اوبونتو

وقتی برنامه ترمینال باز شد، می‌توانید باینری‌های Go را به صورت دستی نصب کنید. البته می‌توانید از ابزارهای مدیریت بسته مانند apt-get نیز استفاده کنید. ولی ورود دستی به مراحل نصب باعث می‌شود که درک بهتری از تغییر در تنظیمات سیستم برای فضای کاری زبان برنامه‌نویسی GO در اختیار داشته باشید.

قبل از اینکه GO را دریافت کنید، حتماً دقت کنید که در دایرکتوری خانگی (~) قرار داشته باشید.


cd ~

با استفاده از فرمان curl، آدرس tarball را از صفحه رسمی دانلود GO کپی‌ کرده بودید، وارد کنید.


curl -LO https://dl.google.com/go/go1.12.1.linux-amd64.tar.gz

سپس، با فرمان sha256sum فایل tarball دریافت‌شده را تأیید نمایید.


sha256sum go1.12.1.linux-amd64.tar.gz

hash نمایش‌‌ داده‌شده پس از اجرای فرمان بالا می‌بایست با آنچه در صفحه دانلود وجود داشت، مطابقت کند. در غیر این صورت، این فایل مورد تأیید نخواهد بود و دوباره باید فایل را دریافت کنید.

خروجی


2a3fdabf665496a0db5f41ec6af7a9b15a49fbe71a85a50ca38b1f13a103aeec  go1.12.1.linux-amd64.tar.gz

سپس آرشیو دریافتی را استخراج کرده و آن در موقعیت دلخواه در سیستم نصب کنید. بهترین موقعیت پیشنهادی برای این منظور، دایرکتوری /usr/local است.


sudo tar -xvf go1.12.1.linux-amd64.tar.gz -C /usr/local

حالا یک دایرکتوری با نام go در مسیر /usr/local خواهید داشت.

نکته: اگرچه /usr/local/go مسیر مناسبی محسوب می‌شود، برخی کاربران ممکن است ترجیح دهند  که از مسیرهای متفاوتی استفاده کنند.

تا به اینجا کار دریافت و نصب زبان برنامه‌نویسی GO را در اوبونتو 18.04 انجام دادیم. در مرحله، به تنظیم محیط کار GO خواهیم پرداخت.

گام ۲) ایجاد محیط کار GO

حالا که GO نصب شده، می‌توانید فضای کاری برنامه‌نویسی خود را بسازید. محیط کار GO شامل دو دایرکتوری در ریشه خود خواهد بود.

  • src: این دایرکتوری شامل فایل‌های منبع GO است. «فایل منبع» فایلی است که با استفاده از زبان برنامه‌نویسی GO آن را می‌نویسید. این فایل‌های منبع توسط کامپایلر GO برای ایجاد فایل اجرای باینری مورد استفاده قرار می‌گیرند.
  • bin: در این دایرکتوری، عناصر اجرایی و نصب‌شده توسط ابزارهای GO قرار می‌گیرند. «عناصر اجرایی» فایل‌های باینری‌ای هستند که بر روی سیستم اجرا شده و وظایف را صورت می‌دهند. این‌ فایل‌ها معمولاً برنامه‌‌هایی هستند که تسوط سورس‌کد یا دیکر منابع دریافت‌شده GO کامپایل شده‌اند.

ساب‌دایرکتوری src ممکن است شامل منابع کنترل نسخه مانند Git، Mercurial و Bazaar باشد. در نتیجه، به‌راحتی می‌توانید کدهای مربوط به پروژه خود را به صورت «کنونیکال» در آن وارد کنید. «ورود کنونیکال» شامل کدهایی است که به بسته‌های کاملاً معتبر ارجاع داده می‌شوند.

اکنون در هنگام ورود کتابخانه‌های ثالث، دایرکتوری‌هایی مانند github.com و golang.org مشاهده می‌کنید. در صورتی که از یک منبع کد مانند گیت‌هاب استفاده می‌کنید، پروژه‌ها و فایل‌های منبع خود را نیز در این دایرکتوری قرار خواهید داد. در ادامه، این مفهوم را بیشتر بررسی خواهیم کرد.

در اینجا، نمونه یک فضای کاری ساده را مشاهده می‌کنید.


├── bin

│   ├── buffalo                                      # command executable

│   ├── dlv                                          # command executable

│   └── packr                                        # command executable

└── src

└── github.com

└── digitalocean

└── godo

├── .git                            # Git repository metadata

├── account.go                      # package source

├── account_test.go                 # test source

├── ...

├── timestamp.go

├── timestamp_test.go

└── util

├── droplet.go

└── droplet_test.go

دایرکتوری پیش‌فرض برای فضای کاری زبان برنامه‌نویسی GO نسخه 1.8، دایرکتوری خانگی کاربر با یک دایرکتوری زیرشاخه go یا $HOME/go است.  در صورتی که از نسخه قبل‌تر از 1.8 استفاده می‌کنید، بهتر است که موقعیت $HOME/go را برای محیط کاری خود انتخاب نمایید.

فرمان زیر به منظور ایجاد ساختار دایرکتوری فضای کاری GO مورد استفاده قرار می‌گیرد.


mkdir -p $HOME/go/{bin,src}

گزینه -p در فرمان mkdir که تمام دایرکتوری‌های مادر، حتی اگر وجود نداشته باشند، ایجاد شوند. استفاده از عبارت {bin,src} باعث می‌شود که هر دو دایرکتوری bin و src ساخته شوند.

در نتیجه، باید حتماً ساختار دایرکتوری زیر را ایجاد کرده باشید.


└── $HOME

└── go

├── bin

└── src

تا نسخه‌های قبل‌تر از Go 1.8، بایستی یک متغیر محیط محلی با نام $GOPATH ایجاد می‌کردیم. $GOPATH به کامپایلر مکان منابع کد ثالث و همین‌طور، سایر منابع کد محلی که ممکن است قبلاً نوشته شده باشند را نشان می‌دهد. البته دیگر استفاده از این متغیر ضروری نیست، ولی با توجه به اینکه بسیاری از ابزارهای ثالث بر اساس این متغیر تنظیم شده‌اند، نمی‌توان از آن صرف‌نظر کرد.

می‌توانید $GOPATH را با اضافه‌کردن متغیر‌های گلوبال به ~/.profile تنظیم کنید. همچنین شاید بخواهید این مورد را بر اساس تنظیمات shell، به فایل .zshrc یا .bashrc اضافه کنید.

ابتدا فایل ~/.profile را با nano یا هر ویرایشگر متنی دلخواه دیگری باز کنید.


nano ~/.profile

حالا با اضافه‌کردن خط زیر به فایل، متغیر $GOPATH را تنظیم کنید.


export GOPATH=$HOME/go

در نتیجه، در هنگام کامپایل و نصب ابزارهای GO، فایل‌ها در مسیر $GOPATH/bin قرار داده خواهند شد. برای راحتی کار، معمولاً دایرکتوری زیرشاخه /bin به PATH در ~/.profile اضافه می‌شود.


export PATH=$PATH:$GOPATH/bin

در نتیجه، این امکان وجود خواهد داشت که برنامه‌های کامپایل‌شده یا دانلود شده توسط ابزار‌های GO در هر جایی از سیستم اجرا شوند.

نهایتاً باید باینری go را به PATH خود اضافه کنید. می‌توانید این کار را با وارد کردن /usr/local/go/bin به انتهای خط انجام دهید.


export PATH=$PATH:$GOPATH/bin:/usr/local/go/bin

در نتیجه، ابزارهای  زبان برنامه‌نویسی GO از هر جایی در سیستم در دسترس خواهند بود.

به منظور بروزرسانی shell، می‌توانید فرمان زیر را برای بارگذاری متغیرهای گلوبال به کار ببرید.


. ~/.profile

با تایپ فرمان echo و بررسی نتیجه خروجی، می‌توانید وضعیت بروزرسانی $PATH را مشاهده کنید.


echo $PATH

در نتیجه، مشاهده می‌کنید که $GOPATH/bin در دایرکتوری خانگی شما قرار دارد. اگر به صورت «روت» در سیستم وارد شده‌اید، /root/go/bin را در مسیر خواهید دید.

خروجی


/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/go/bin:/usr/local/go/bin

همچنین مسیر ابزارهای زبان برنامه‌نویسی GO را برای /usr/local/go/bin مشاهده می‌کنید.


خروجی

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/go/bin:/usr/local/go/bin

با بررسی نسخه کنونی GO، از وضعیت نصب آن مطمئن شوید.


go version

در نتیجه، باید با خروجی‌ای مشابه زیر روبرو شوید.


go version go1.12.1 linux/amd64

حالا که ریشه محیط کاری خود را ایجاد و متغیر محیطی $GOPATH را تنظیم کرده‌اید، می‌توانید پروژه‌های آینده خود را بر اساس این ساختار دایرکتوری بسازید. در این مثال، فرض می‌شود که از github.com به عنوان منبع استفاده کرده‌اید.


$GOPATH/src/github.com/username/project

بنابراین، اگر به عنوان نمونه، بر روی پروژه https://github.com/digitalocean/godo کار کنید، ذخیره در دایرکتوری زیر انجام خواهد گرفت.


$GOPATH/src/github.com/digitalocean/godo

این ساختار پروژه باعث می‌شود که پروژه‌ها با ابزار go get در دسترس قرار داشته باشند. همچنین بعداً خواندن آنها راحت‌تر خواهد بود. می‌توانید این وضعیت را با فرمان go get و دریافت کتابخانه godo بررسی نمایید.


go get github.com/digitalocean/godo

در نتیجه، محتوای کتابخانه godo دانلود می‌شوند و دایرکتوری $GOPATH/src/github.com/digitalocean/godo در سیستم ایجاد می‌گردد.

با لیست‌کردن دایرکتوری می‌توانید از دانلود بسته godo مطمئن شوید.


ll $GOPATH/src/github.com/digitalocean/godo

در نتیجه، خروجی‌ای مشابه زیر خواهید دید.


drwxr-xr-x 4 root root  4096 Apr  5 00:43 ./

drwxr-xr-x 3 root root  4096 Apr  5 00:43 ../

drwxr-xr-x 8 root root  4096 Apr  5 00:43 .git/

-rwxr-xr-x 1 root root     8 Apr  5 00:43 .gitignore*

-rw-r--r-- 1 root root    61 Apr  5 00:43 .travis.yml

-rw-r--r-- 1 root root  2808 Apr  5 00:43 CHANGELOG.md

-rw-r--r-- 1 root root  1851 Apr  5 00:43 CONTRIBUTING.md

.

.

.

-rw-r--r-- 1 root root  4893 Apr  5 00:43 vpcs.go

-rw-r--r-- 1 root root  4091 Apr  5 00:43 vpcs_test.go

در مرحله بعد، محیط کار زبان برنامه‌نویسی GO را با  برخی کدها آزمایش خواهیم کرد.

گام ۳) ساخت برنامه نمونه سلام به دنیا

اکنون با تنظیم محیط کاری GO، نوبت به ساخت برنامه نمونه “Hello, World!” می‌رسد. با این کار از تنظیم مناسب محیط کار مطمئن می‌شوید و همچنین فرصتی است برای آشنایی بیشتر با زبان برنامه نویسی GO. به دلیل اینکه قرار است یک فایل منبع GO جداگانه، و نه یک پروژه واقعی تولید کنیم، نیازی به حضور در محیط کاری برای این منظور نداریم.

از دایرکتوری خانگی، یک ویرایشگر متنی خط فرمان مانند nano باز کنید و یک فایل جدید ایجاد نمایید.


nano hello.go

برنامه خود را در فایل جدید بنویسید.


package main

import "fmt"

func main() {

fmt.Println("Hello, World!")

}

این کد از بسته fmt استفاده کرده و با آرگومان Hello, World!، تابع Println را فراخوانی می‌کند. در نتیجه، در هنگام اجرای برنامه، عبارت Hello, World! در ترمینال به نمایش درمی‌آید.

با فشردن کلیدهای CTRL و X از ویرایشگر خارج شوید. وقتی پیغام ذخیره برنامه نشان داده شد، کلید Y و سپس Enter را بزنید.

وقتی از nano خارج شدید و به shell برگشتید، برنامه را اجرا کنید.


go run hello.go

برنامه hello.go موجب می‌شود که ترمینال، خروجی زیر را تولید کند.


Hello, World!

در این مرحله از یک برنامه پایه برای آزمایش تنظیمات فضای کاری GO استفاده کردیم.

جمع‌بندی

با مطالعه و دنبال‌کردن مراحل این مطلب، توانسته‌اید یک فضای کاری زبان برنامه‌نویسی GO در سیستم اوبونتو در دسترس داشته باشید و اکنون می‌توانید یک پروژه کدنویسی را شروع کنید. امیدواریم که از این مطلب وبلاگ آریانت نیز نهایت استفاده را برده باشید.