مبانی زبان گولنگ (بخش دوم)

ایجاد شده توسط دکتر مصطفی جلیلی در آموزش برنامه نویسی گولنگ 6 آوریل 2025
اشتراک گذاری

مبانی زبان Go (بخش دوم) – توابع، شرط‌ها، حلقه‌ها و مدیریت خطا


در این بخش از آموزش زبان Go، می‌خوایم با مفاهیم پرکاربردی مثل توابع، شرط‌ها، حلقه‌ها و مدیریت خطاها آشنا بشیم. این مفاهیم بخش اصلی ساختار هر برنامه‌ای رو تشکیل می‌دن و برای نوشتن کدهای پیچیده‌تر خیلی مهم هستن.




 توابع در Go: تعریف، ورودی و خروجی


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


تعریف تابع:


func add(x int, y int) int {
return x + y
}

در اینجا تابع add دو ورودی از نوع int داره و یک مقدار int به‌عنوان خروجی برمی‌گردونه.


مقداردهی پیش‌فرض در ورودی‌ها:


در Go می‌تونی از نوع داده‌ها استفاده کنی، ولی نیازی به مشخص کردن نوع برای پارامترهای مشابه نیست. مثل:


func add(x, y int) int {
return x + y
}

مقدار خروجی چندگانه:


Go به شما این امکان رو می‌ده که چندین خروجی رو از یک تابع دریافت کنید:


func swap(x, y int) (int, int) {
return y, x
}



شرط‌ها در Go: if و switch


دستور if:


برای اجرای بخش‌های مختلف کد بسته به شرایط مختلف می‌تونی از دستور if استفاده کنی. این دستور به شما این امکان رو می‌ده که چک کنی آیا یه شرط برقرار هست یا نه.


if x > y {
fmt.Println("x بزرگتر از y است")
} else {
fmt.Println("y بزرگتر از x است")
}

دستور switch:


دستور switch در Go بسیار قدرتمند و انعطاف‌پذیر هست. این دستور برای انجام بررسی‌های مختلف روی یک متغیر خیلی مناسب و خوانا هست.


switch x {
case 1:
fmt.Println("مقدار 1")
case 2:
fmt.Println("مقدار 2")
default:
fmt.Println("مقدار غیر از 1 یا 2")
}

در این مثال، Go مقدار متغیر x رو بررسی می‌کنه و بسته به مقدارش یکی از بخش‌ها رو اجرا می‌کنه.




حلقه‌ها در Go: for و range


حلقه for:


در Go، تنها حلقه‌ای که داریم همون حلقه for است. این حلقه می‌تونه هم برای شمارش، هم برای پیمایش و هم برای حلقه‌های بی‌پایان استفاده بشه.


for i := 0; i < 5; i++ {
fmt.Println(i)
}

حلقه range:


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


arr := []int{1, 2, 3, 4}
for index, value := range arr {
fmt.Println(index, value)
}



خطایابی و مدیریت خطاها (Error Handling)


در Go، برخلاف زبان‌های دیگه که از استثنا (Exceptions) استفاده می‌کنن، برای مدیریت خطاها از یک ساختار خاص به نام error استفاده میشه.


بررسی خطا:


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


مثال:


package main
import (
"fmt"
"strconv"
)
func main() {
str := "123a"
num, err := strconv.Atoi(str)
if err != nil {
fmt.Println("خطا در تبدیل رشته به عدد:", err)
} else {
fmt.Println("عدد تبدیل‌شده:", num)
}
}

در این مثال، تابع Atoi سعی می‌کنه رشته رو به عدد تبدیل کنه، ولی اگه چیزی غیر از عدد توش باشه، خطا تولید می‌کنه که باید بررسی بشه.




بلاک‌ها و Scope در Go


در Go، متغیرها در بلوک‌های خاصی تعریف می‌شن و دسترسی به اون‌ها محدود به همون بلوک هست. این یعنی هر متغیری که داخل یک تابع، شرط یا حلقه تعریف بشه فقط می‌تونه در همون بخش استفاده بشه.


مثال:


func testScope() {
var x = 10
if x > 5 {
var y = 20
fmt.Println(x, y)
}
fmt.Println(x) // مشکلی نداره
// fmt.Println(y) // خطا: y در اینجا قابل دسترس نیست
}

در اینجا، متغیر x در کل تابع testScope قابل دسترسه، ولی y فقط داخل بلوک if تعریف شده و نمی‌تونیم ازش بیرون استفاده کنیم.




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

نظرات (0)

اشتراک گذاری

این پست را با دیگران به اشتراک بگذارید

تنظیمات GDPR

When you visit any of our websites, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and manage your preferences. Please note, that blocking some types of cookies may impact your experience of the site and the services we are able to offer.