محبوبیت Go در طول سال ها افزایش یافته است. شرکتهای بیشتری در حال استفاده از Go هستند و با گسترش موارد استفاده بیشتر برای این زبان، گروه توسعهدهندگان در حال رشد است. مردم از آن برای ساختن برنامه هایی از برنامه های وب سریع، راه حل های بلاک چین و ابزارهای یادگیری ماشین استفاده می کنند.
محبوبیت Go در طول سال ها افزایش یافته است. شرکتهای بیشتری در حال استفاده از Go هستند و با گسترش موارد استفاده بیشتر برای این زبان، گروه توسعهدهندگان در حال رشد است. مردم از آن برای ساختن برنامه هایی از برنامه های وب سریع، راه حل های بلاک چین و ابزارهای یادگیری ماشین استفاده می کنند.
توسعه دهندگان Go را به دلیل بیان، سهولت استفاده و عملکرد زبانی بالا دوست دارند. Go منحنی یادگیری سریعتری نسبت به بسیاری از زبانها با اکوسیستم بستهها و کتابخانهها دارد.
شروع با Go
زبان برنامه نویسی Go در ویندوز، macOS یا اکثر توزیعهای لینوکس از قبل نصب نشده است. برای اجرای برنامه های Go باید Go را نصب کنید. می توانید صفحه رسمی دانلودهای Go را بررسی کنید تا آن را روی دستگاه خود نصب کنید. از آنجایی که نسخههای جدیدتر دارای ویژگیها و بهروزرسانیهای بیشتری هستند، میخواهید نسخه اخیر Go را نصب کنید تا بیشترین استفاده را از زبان ببرید.
پس از نصب Go، میتوانید با زبان کار کنید، فایلهای Go را اجرا کنید، فضاهای کاری ایجاد کنید و پروژههایی را در Go بسازید.
می توانید یک فایل Go ایجاد کنید و برنامه های Go را با استفاده از کتابخانه استاندارد اجرا کنید. با این حال، اگر میخواهید از کتابخانههای خارجی استفاده کنید، باید یک فایل Go modules برای مدیریت وابستگی، ردیابی نسخه و موارد دیگر ایجاد کنید.
فایل Go Modules
در Go، یک ماژول مجموعه ای از بسته ها در یک درخت فایل با فایل go.mod در ریشه است. آن فایل مسیر ماژول، مسیر واردات و الزامات وابستگی را برای یک فرآیند ساخت موفق تعریف می کند.
می توانید قبل از تعیین مسیر یا دایرکتوری پروژه، یک فایل Go modules را با دستور Go mod و دستور فرعی init ایجاد کنید.
go mod init project-directory
دستور فایل go.mod را ایجاد می کند. آرگومان بعد از دستور init مسیر ماژول است. مسیر ماژول می تواند مسیر فایل در محیط میزبان شما یا مسیر دامنه مخزن باشد.
وقتی بستهها و وابستگیهای خارجی را نصب میکنید، go اعلان نیازمندی را در فایل go.mod بهروزرسانی میکند تا مطمئن شود که شامل آنها میشوند.
می توانید از دستور فرعی tidy دستور mod برای دانلود تمام وابستگی های مورد نیاز برنامه خود استفاده کنید.
go mod tidy
این دستور همه ورودیهای گمشده را در فایل go modules دانلود میکند.
فضای نام بسته Go
هر فایل منبع Go متعلق به یک بسته است و شما می توانید با استفاده از شناسه آن به کد داخل فضای نام بسته دسترسی پیدا کنید.
شما می توانید چندین فضای نام برای بسته های خود داشته باشید. پس از ایجاد یک پوشه، فضای نام جدیدی ایجاد کرده اید. می توانید با علامت نقطه (.) به فضای نام دیگر دسترسی پیدا کنید.
// folder 1
package folder
func Folder() any {
// some function body here
return 0;
}
در اینجا نمونه ای از دسترسی به یک فضای نام متفاوت از فضای نام دیگر آورده شده است.
// folder 2, file in different namespace
package directory
func directory() {
// accessing the Folder function from the folder namespace
folderFunc := folder.Folder()
}
برای دسترسی به یک شناسه در یک فضای نام خارجی، باید شناسه را با حروف بزرگ کردن نام صادر کنید.
عملکرد اصلی
تابع اصلی به عنوان نقطه ورود برای برنامه های Go عمل می کند. شما نمی توانید یک فایل یا بسته Go را بدون عملکرد اصلی اجرا کنید. شما می توانید یک تابع اصلی در هر فضای نامی داشته باشید. با این حال، شما باید تنها یک تابع اصلی در یک فایل یا بسته داشته باشید.
در اینجا یک برنامه ساده Hello World برای نشان دادن عملکرد اصلی وجود دارد:
package main
import "fmt"
func main {
fmt.Println("Hello, World!")
}
این کد تابع اصلی را در فضای نام بسته اصلی اعلام می کند. سپس بسته fmt را وارد می کند و از روش Println برای خروجی یک رشته به کنسول استفاده می کند.
وارد کردن بستهها در Go
در مقایسه با بسیاری از زبان های دیگر، وارد کردن بسته ها و وابستگی ها آسان است. کلمه کلیدی import عملکردی را برای وارد کردن بسته ها فراهم می کند. می توانید بسته ها را از کتابخانه استاندارد و وابستگی های خارجی با کلمه کلیدی import وارد کنید.
import "fmt"
در مثال بالا، شما در حال وارد کردن یک بسته هستید. می توانید چندین بسته را وارد کنید. شما باید بسته ها را در پرانتز بعد از عبارت import مشخص کنید.
import (
"fmt" // fmt for printing
"log" // log for logging
"net/http" // http for web applications
"encoding/json" // json for serializing and deserializing structs to JSON
)
افزودن هر گونه جداکننده در اظهارات واردات نامعتبر است. شما می توانید با تعیین نام سفارشی قبل از نام بسته، یک نام سفارشی برای واردات اعلام کنید.
import (
"net/http"
encoder "encoding/json"// alias import here
)
در اینجا، بسته json را با نام سفارشی به عنوان رمزگذار وارد کردید. شما باید با نام سفارشی (رمزگذار) به توابع و انواع بسته دسترسی داشته باشید.
برخی از بسته ها به دلیل عوارض جانبی نیاز به واردات بسته های دیگر دارند. شما باید نام بسته را با یک خط زیر بنویسید.
import (
_ "fmt" // side effects import
"log"
)
شما نمی توانید به بسته هایی که وارد کرده اید برای عوارض جانبی دسترسی داشته باشید، اما اگر آنها را پیکربندی کنید، وابستگی ها می توانند.
برو اجرا در مقابل برو بیلد
شما از دستورات run and build برای کامپایل و اجرای کد Go خود استفاده خواهید کرد. آنها عملکردهای مشابهی دارند و شما از آنها برای اجرای بسته ها استفاده خواهید کرد.
دستور run ترکیبی از دستورات کامپایل و اجرا است. دستور run بسته را بدون ایجاد فایل اجرایی در پوشه کاری اجرا می کند. پس از دستور run باید نام فایل نام بسته را مشخص کنید.
go run file.go // executes a file
go run packagename // executes the package
دستور build یک دستور کامپایل است که یک بسته یا فایل را در یک فایل اجرایی باینری کامپایل می کند.
اگر دستور build را بدون هیچ آرگومان بعد از نام فایل یا بسته اجرا کنید، go یک فایل اجرایی در دایرکتوری ریشه بسته شما ایجاد می کند.
go build main.go // compiles a file
go build "package name" // compiles a package
هنگام تغییر بسته، باید برنامه را با دستور build مجدداً کامپایل کنید.
می توانید یک دایرکتوری را به عنوان آرگومان تعیین کنید و دستور build فایل اجرایی را در دایرکتوری مشخص شده خروجی می دهد.
go build file -o "directory"
کارهای زیادی می توانید با Go انجام دهید
کتابخانه استاندارد Go قدرتمند و شهودی است. شما می توانید به سرعت برنامه های مدرن را بدون نیاز به نصب هیچ گونه وابستگی خارجی بسازید.
از زمان انتشار Go در سال 2009، توسعه دهندگان و شرکت ها از آن برای موارد استفاده مختلف، در طیف وسیعی از زمینه ها استفاده کرده اند. موفقیت آن در درجه اول به این دلیل است که Go یک نحو شبیه پایتون را در کنار عملکردی شبیه C ارائه می دهد.