نایی با ابزار go و نحوه توسعه پروژهها یکی از اولین گامهای یادگیری زبان گو است. در این مقاله آموزشی، با هم یاد میگیریم که چطور یک Module ساده بسازیم، پکیجها را سازماندهی کنیم، کدهای ریموت را ایمپورت کرده و در نهایت برای کدمان تست بنویسیم! 🚀
سازماندهی کدها در Go
برنامهها در زبان گو حول محور پکیجها (Packages) شکل میگیرند. یک پکیج در واقع مجموعهای از فایلهای گو است که در یک پوشه قرار دارند و با هم کامپایل میشوند. توابع، متغیرها و Structهایی که در یک فایل از پکیج مینویسید، در تمام فایلهای دیگر همان پکیج بدون نیاز به کارهای اضافی قابل دسترسی هستند.
کدهای شما معمولاً داخل یک Module قرار میگیرند. ماژول مجموعهای از پکیجهای مرتبط است که با هم نسخه خورده و منتشر میشوند. در ریشه (Root) پروژه، فایلی به نام go.mod قرار دارد که مسیر ماژول (Module Path) را مشخص میکند.
💡 نکته کاربردی: برای ساخت و اجرای پروژهها نیازی نیست حتماً کدهای خود را در گیتهاب یا مخازن ریموت آپلود کرده باشید! میتوانید ماژولها را کاملاً محلی (Local) روی سیستم خودتان تعریف کنید و توسعه دهید.
ساخت اولین برنامه (Hello World)
برای شروع، یک مسیر دلخواه برای ماژول انتخاب میکنیم (مثلاً example/user/hello) و فایل go.mod را میسازیم:
$ mkdir hello
$ cd hello
$ go mod init example/user/hello
go: creating new go.mod: module example/user/hello
حالا فایلی به نام hello.go ایجاد کرده و کدهای زیر را در آن قرار دهید:
package main
import "fmt"
func main() {
fmt.Println("سلام دنیای گو!")
}
⚠️ یادآوری مهم: اولین خط در فایلهای گو همیشه نام پکیج را مشخص میکند. برنامههایی که قرار است اجرا شوند (Executable) باید حتماً از
package mainاستفاده کنند.
ساخت و نصب برنامه
با ابزار go میتوانید برنامه را نصب و خروجی باینری آن را تولید کنید:
$ go install example/user/hello
این دستور فایل اجرایی برنامه را در مسیر $HOME/go/bin/hello (یا در ویندوز %USERPROFILE%\go\bin\hello.exe) قرار میدهد.
💡 یک ترفند برای اجرای سریعتر: اگر مسیر نصب گو را به متغیر محیطی PATH سیستمعامل خود اضافه کنید، میتوانید برنامهتان را فقط با تایپ نام آن اجرا کنید:
$ export PATH=$PATH:$(dirname $(go list -f '{{.Target}}' .))
$ hello
سلام دنیای گو!
ایجاد و ایمپورت پکیجهای داخلی
بیایید یک پکیج جدید به نام morestrings در پروژهمان بسازیم. یک پوشه به نام morestrings ایجاد کرده و فایل reverse.go را در آن قرار دهید:
// Package morestrings توابع متنی بیشتری را برای مدیریت کاراکترهای UTF-8 ارائه میدهد.
package morestrings
// ReverseRunes رشته ورودی را بهصورت کاراکتر به کاراکتر (Rune) معکوس میکند.
func ReverseRunes(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
r[i], r[j] = r[j], r[i]
}
return string(r)
}
💡 نکته کلیدی: در زبان Go اگر نام یک تابع یا متغیر با حرف بزرگ شروع شود (مثل ReverseRunes)، آن تابع Export شده و از خارج پکیج قابل استفاده است. اگر با حرف کوچک شروع شود، فقط در داخل همان پکیج دسترسی دارد.
حالا میتوانید از این پکیج درون فایل hello.go اصلی استفاده کنید:
package main
import (
"fmt"
"example/user/hello/morestrings"
)
func main() {
fmt.Println(morestrings.ReverseRunes("!oG ,olleH"))
}
کد را مجدداً نصب و اجرا کنید:
$ go install example/user/hello
$ hello
Hello, Go!
استفاده از پکیجها و ماژولهای ریموت (خارجی)
یکی از جذابیتهای Go، مدیریت آسان وابستگیهای خارجی (External Dependencies) است. برای مثال، اگر بخواهید از پکیج go-cmp گوگل استفاده کنید، کافی است آن را در کدهای خود Import کنید:
package main
import (
"fmt"
"example/user/hello/morestrings"
"github.com/google/go-cmp/cmp"
)
func main() {
fmt.Println(morestrings.ReverseRunes("!oG ,olleH"))
fmt.Println(cmp.Diff("Hello World", "Hello Go"))
}
سپس دستور زیر را اجرا کنید تا گو بهصورت خودکار پکیجهای مورد نیاز را دانلود کرده و فایل go.mod شما را بهروزرسانی کند:
$ go mod tidy
نوشتن تستهای واحد (Testing)
زبان Go بهصورت پیشفرض یک فریمورک تست سبک و قدرتمند دارد. تنها کافی است فایلی بسازید که نام آن به _test.go ختم شود و توابعی با نام TestXxx بنویسید.
برای پکیج morestrings فایلی به نام reverse_test.go ایجاد کنید:
package morestrings
import "testing"
func TestReverseRunes(t *testing.T) {
cases := []struct {
in, want string
}{
{"Hello, world", "dlrow ,olleH"},
{"Hello, 世界", "界世 ,olleH"},
{"", ""},
}
for _, c := range cases {
got := ReverseRunes(c.in)
if got != c.want {
t.Errorf("ReverseRunes(%q) == %q, want %q", c.in, got, c.want)
}
}
}
برای اجرای تستها کافی است وارد پوشه پکیج شوید و دستور زیر را تایپ کنید:
$ cd $HOME/hello/morestrings
$ go test
PASS
ok example/user/hello/morestrings 0.165s
به همین راحتی! اکنون شما ساختار کلی پروژههای گو، نحوه مدیریت ماژولها و نوشتن تست را فرا گرفتهاید.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: منبع مستندات