جستجوی دودویی
الگوریتم جستجوی دودویی تکنیکی است برای یافتن یک مقدار عددی از میان مجموعهای از اعداد مرتب. این متد محدودهٔ جستجو را در هر مرحله به نصف کاهش میدهد، بنابراین هدف مورد نظر یا به زودی پیدا میشود یا مشخص میشود که مقدار مورد جستجو در فهرست وجود ندارد.
جستجوی دودویی فقط در آرایههای مرتب استفاده میشود. در این روش عنصر مورد نظر با خانه وسط آرایه مقایسه میشود اگر با این خانه برابر بود جستجو تمام میشود اگر عنصر مورد جستجو از خانه وسط بزرگتر بود جستجو در بخش بالایی آرایه و در غیر این صورت جستجو در بخش پایینی آرایه انجام میشود (فرض کردهایم آرایه به صورت صعودی مرتب شدهاست) این رویه تا یافتن عنصر مورد نظر یا بررسی کل خانههای آرایه ادامه مییابد.
مثال:
#binary_search
@Syntax_fa
الگوریتم جستجوی دودویی تکنیکی است برای یافتن یک مقدار عددی از میان مجموعهای از اعداد مرتب. این متد محدودهٔ جستجو را در هر مرحله به نصف کاهش میدهد، بنابراین هدف مورد نظر یا به زودی پیدا میشود یا مشخص میشود که مقدار مورد جستجو در فهرست وجود ندارد.
جستجوی دودویی فقط در آرایههای مرتب استفاده میشود. در این روش عنصر مورد نظر با خانه وسط آرایه مقایسه میشود اگر با این خانه برابر بود جستجو تمام میشود اگر عنصر مورد جستجو از خانه وسط بزرگتر بود جستجو در بخش بالایی آرایه و در غیر این صورت جستجو در بخش پایینی آرایه انجام میشود (فرض کردهایم آرایه به صورت صعودی مرتب شدهاست) این رویه تا یافتن عنصر مورد نظر یا بررسی کل خانههای آرایه ادامه مییابد.
مثال:
package main
import (
"errors"
"fmt"
)
func main() {
list := []int{1, 2, 3, 6, 7, 8, 10, 12, 15, 16, 17, 18, 19, 22, 23, 24, 25, 29, 33}
index, err := binary_search(list, 10)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Printf("index: %d", index)
}
func binary_search(list []int, item int) (int, error) {
low := 0
hight := len(list) - 1
for low <= hight {
mid := (low + hight) / 2
guess := list[mid]
if guess == item {
return mid, nil
} else if guess < item {
low = hight - mid
} else {
hight = mid + 1
}
}
return 0, errors.New("number not found")
}
#binary_search
@Syntax_fa
👍10
This media is not supported in your browser
VIEW IN TELEGRAM
یکم از کد فاصله بگیریم
برید سریال طلسم شدگانو ببینید کلی بخندید😂
(فقط حتما دوبله فارسی ببینید و سانسور نشده)
برید سریال طلسم شدگانو ببینید کلی بخندید😂
(فقط حتما دوبله فارسی ببینید و سانسور نشده)
😁5
کتابهای مفید برای کارشناسی مهندسی کامپیوتر - نرمافزار
https://www.youtube.com/watch?v=RwdvU-BSynw
@Syntax_fa
https://www.youtube.com/watch?v=RwdvU-BSynw
@Syntax_fa
YouTube
کتابهای مفید برای کارشناسی مهندسی کامپیوتر - نرمافزار
Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.
👍6
سوال:
چجوری سی پی یو، نوع دیتایی که توی memory ذخیره کردیم رو، به درستی شناسایی می کنه؟
#Question
@Syntax_fa
چجوری سی پی یو، نوع دیتایی که توی memory ذخیره کردیم رو، به درستی شناسایی می کنه؟
#Question
@Syntax_fa
👍5
Syntax | سینتکس
سوال: چجوری سی پی یو، نوع دیتایی که توی memory ذخیره کردیم رو، به درستی شناسایی می کنه؟ #Question @Syntax_fa
بیایید این موضوع رو با جزئیات بیشتری بررسی کنیم.
### مفهوم نوع داده
در زبانهای برنامهنویسی، نوع دادهها (Data Types) به ما کمک میکنند تا مشخص کنیم که یک تکه از حافظه باید چگونه تفسیر و استفاده شود. به عنوان مثال، یک نوع داده میتواند عدد صحیح، عدد اعشاری، کاراکتر، رشته یا هر نوع داده دیگری باشد.
### نقش برنامهنویس
برنامهنویس هنگام نوشتن کد، نوع دادهها را تعریف میکند. برای مثال در زبان C، شما میتوانید یک عدد صحیح را اینگونه تعریف کنید:
در اینجا
### نقش کامپایلر
کامپایلر نقش مهمی در ترجمه کد برنامهنویس به کد ماشین (که توسط سی پی یو قابل فهم است) دارد. کامپایلر نوع دادهها را از کد منبع (Source Code) میخواند و بر اساس آن دستورات مناسب را تولید میکند. این دستورات شامل عملیاتهایی مانند جمع، تفریق، ضرب و تقسیم برای اعداد صحیح، یا عملیاتهای دیگری برای انواع دادههای مختلف است.
### نقش حافظه
حافظه (RAM) فقط مجموعهای از بیتها است. حافظه نوع دادهها را نمیداند؛ فقط دادهها را ذخیره و بازیابی میکند. این برنامهنویس و کامپایلر هستند که مشخص میکنند چگونه باید به این بیتها نگاه کرد و آنها را تفسیر کرد.
### نقش سی پی یو
سی پی یو دستورات کامپایل شده را اجرا میکند. سی پی یو فقط بیتها را میبیند و نوع دادهها برای آن معنایی ندارد. به عنوان مثال، اگر سی پی یو دستور
### مثال عملی
فرض کنید شما یک برنامه ساده دارید که دو عدد صحیح را در حافظه ذخیره میکند و آنها را جمع میکند.
1. تعریف متغیرها:
2. کامپایل کد:
کامپایلر این کد را به دستوراتی تبدیل میکند که سی پی یو میتواند اجرا کند. این دستورات میتوانند به شکل زیر باشند (به زبان ماشین):
3. اجرای دستورات توسط سی پی یو:
سی پی یو این دستورات را اجرا میکند. در اینجا،
### نتیجه
سی پی یو به خودی خود نوع دادهها را شناسایی نمیکند. این برنامهنویس است که نوع دادهها را تعریف میکند و کامپایلر است که این اطلاعات را به دستورات قابل فهم برای سی پی یو تبدیل میکند. حافظه فقط دادهها را به صورت بیت ذخیره میکند و سی پی یو این بیتها را بدون توجه به نوع آنها پردازش میکند. بنابراین، مدیریت صحیح نوع دادهها بر عهده برنامهنویس و کامپایلر است.
### خلاصه
- برنامهنویس: نوع دادهها را در کد منبع تعریف میکند.
- کامپایلر: کد منبع را تجزیه و تحلیل کرده و دستورات مناسب برای سی پی یو تولید میکند.
- حافظه: دادهها را به صورت بیت ذخیره میکند و نوع دادهها را نمیداند.
- سی پی یو: دستورات را اجرا میکند و بیتها را بدون توجه به نوع آنها پردازش میکند.
#data_types
@Syntax_fa
### مفهوم نوع داده
در زبانهای برنامهنویسی، نوع دادهها (Data Types) به ما کمک میکنند تا مشخص کنیم که یک تکه از حافظه باید چگونه تفسیر و استفاده شود. به عنوان مثال، یک نوع داده میتواند عدد صحیح، عدد اعشاری، کاراکتر، رشته یا هر نوع داده دیگری باشد.
### نقش برنامهنویس
برنامهنویس هنگام نوشتن کد، نوع دادهها را تعریف میکند. برای مثال در زبان C، شما میتوانید یک عدد صحیح را اینگونه تعریف کنید:
int a = 10;
در اینجا
int بیانگر این است که متغیر a یک عدد صحیح است.### نقش کامپایلر
کامپایلر نقش مهمی در ترجمه کد برنامهنویس به کد ماشین (که توسط سی پی یو قابل فهم است) دارد. کامپایلر نوع دادهها را از کد منبع (Source Code) میخواند و بر اساس آن دستورات مناسب را تولید میکند. این دستورات شامل عملیاتهایی مانند جمع، تفریق، ضرب و تقسیم برای اعداد صحیح، یا عملیاتهای دیگری برای انواع دادههای مختلف است.
### نقش حافظه
حافظه (RAM) فقط مجموعهای از بیتها است. حافظه نوع دادهها را نمیداند؛ فقط دادهها را ذخیره و بازیابی میکند. این برنامهنویس و کامپایلر هستند که مشخص میکنند چگونه باید به این بیتها نگاه کرد و آنها را تفسیر کرد.
### نقش سی پی یو
سی پی یو دستورات کامپایل شده را اجرا میکند. سی پی یو فقط بیتها را میبیند و نوع دادهها برای آن معنایی ندارد. به عنوان مثال، اگر سی پی یو دستور
ADD را دریافت کند، دو تکه از دادهها (که میتواند اعداد صحیح، اعشاری یا هر نوع دیگری باشند) را جمع میکند. سی پی یو اهمیتی نمیدهد که این دادهها چه نوعی دارند، فقط دستور را اجرا میکند.### مثال عملی
فرض کنید شما یک برنامه ساده دارید که دو عدد صحیح را در حافظه ذخیره میکند و آنها را جمع میکند.
1. تعریف متغیرها:
int a = 5;
int b = 10;
2. کامپایل کد:
کامپایلر این کد را به دستوراتی تبدیل میکند که سی پی یو میتواند اجرا کند. این دستورات میتوانند به شکل زیر باشند (به زبان ماشین):
MOV eax, [a] ; بارگذاری عدد اول در ثبات eax
ADD eax, [b] ; افزودن عدد دوم به eax
3. اجرای دستورات توسط سی پی یو:
سی پی یو این دستورات را اجرا میکند. در اینجا،
MOV و ADD دستورات سادهای هستند که سی پی یو را راهنمایی میکنند تا دادهها را از حافظه بارگذاری کرده و آنها را جمع کند.### نتیجه
سی پی یو به خودی خود نوع دادهها را شناسایی نمیکند. این برنامهنویس است که نوع دادهها را تعریف میکند و کامپایلر است که این اطلاعات را به دستورات قابل فهم برای سی پی یو تبدیل میکند. حافظه فقط دادهها را به صورت بیت ذخیره میکند و سی پی یو این بیتها را بدون توجه به نوع آنها پردازش میکند. بنابراین، مدیریت صحیح نوع دادهها بر عهده برنامهنویس و کامپایلر است.
### خلاصه
- برنامهنویس: نوع دادهها را در کد منبع تعریف میکند.
- کامپایلر: کد منبع را تجزیه و تحلیل کرده و دستورات مناسب برای سی پی یو تولید میکند.
- حافظه: دادهها را به صورت بیت ذخیره میکند و نوع دادهها را نمیداند.
- سی پی یو: دستورات را اجرا میکند و بیتها را بدون توجه به نوع آنها پردازش میکند.
#data_types
@Syntax_fa
👍12
سودوکد (Pseudocode) چیست و چه کمکی به ما میکند؟
https://blog.faradars.org/what-is-pseudocode/
#pseudocode
@Syntax_fa
https://blog.faradars.org/what-is-pseudocode/
#pseudocode
@Syntax_fa
فرادرس - مجله
شبه کد (Pseudocode) چیست و چه کمکی به ما میکند؟
داشتن تفکر برنامهنویسی به ما کمک میکند که مسائل را به الگوریتمهایی که آنها را حل میکنند بشکنیم. در این مقاله با مفهوم شبه کد آشنا خواهیم شد.
👍6
main.pdf
153.9 KB
دوستان اگه برای پروژه هاتون فرانت کار نیاز داشتید این دوستمون رو حتما در نظر بگیرید.
(برید نمونه کارای رزومشو ببینید تا پی ببرید چقدر کارش خوبه)
ایدی تلگرام:
@Alivolley
(برید نمونه کارای رزومشو ببینید تا پی ببرید چقدر کارش خوبه)
ایدی تلگرام:
@Alivolley
🔥8👍1
یه سایتی هست به نام #ناکامولوژی که میاد استارتاپ هایی که شکست خوردن رو کامل معرفی میکنه و علت شکست رو هم عنوان میکنه👌 میتونه برای مقابله با خوش بینی بیش از حد و انتخاب مسیر درست خیلی کمک کننده باشه. اینکه صرفا چشممون به استارت آپ های قوی نره و فکر نکنیم فقط شروع کردن مهمه!🤔 خیلی چیزا هست که میتونه یه پروژه خیلی قوی رو زمین بزنه💥 خوندن داستان های شکست به اندازه ی خوندن داستان های موفقیت ضروریه!
https://nakamology.ir/
link
#introduction
@Syntax_fa
https://nakamology.ir/
link
#introduction
@Syntax_fa
👍14
solid-book-v1.0.5.pdf
3.4 MB
کتاب فارسی پنج اصل SOLID
سولید ( SOLID ) یک کلمه مخفف برای پنچ اصل اولیه طراحی شئ گرا است که رابرت سیسیل مارتین معروف به عمو باب ( uncle bob ) اون رو مطرح کرد.
این اصول زمانی که دست به دست هم میدن، کار گسترش یا اضافه کردن قابلیت های جدید به برنامه و نگهداری و دیباگ یک برنامه رو برای برنامه نویس ها آسان می کنند.
#book
@Syntax_fa
سولید ( SOLID ) یک کلمه مخفف برای پنچ اصل اولیه طراحی شئ گرا است که رابرت سیسیل مارتین معروف به عمو باب ( uncle bob ) اون رو مطرح کرد.
این اصول زمانی که دست به دست هم میدن، کار گسترش یا اضافه کردن قابلیت های جدید به برنامه و نگهداری و دیباگ یک برنامه رو برای برنامه نویس ها آسان می کنند.
#book
@Syntax_fa
🔥14👍5
🔥یه مقاله تازه و داغ در مورد scale کردن بکند با حداقل منابع روی سرور
خیلی نکات جالب و مهمی رو بهش اشاره میکنه، از جمله اینکه لازمه observability pipeline رو قبل از هر چیزی راه اندازی کنید که بتونید بر اساس داده و اطلاعات تصمیم گیری کنید. این نکته خیلی مهمی هست که ما خیلی وقت ها فراموش می کنیم.
وقتی مشکل performanceی داریم اول باید در مورد مشکل مون داده و اطلاعات جمع آوری کنیم. بعدش بریم سراغ اینکه حالا چطور مشکل رو حل کنیم.
مقاله جذابیه که در مورد موارد مختلفی برای بهینه سازی صحبت میکنه از connection pooling گرفته تا ایندکس دیتابیس و goroutine throttling
Scaling Backend to 1M requests with just 2GB ram ⚡️
https://dev.to/rikenshah/scaling-backend-to-1m-requests-with-just-2gb-ram-4m0c
@gocasts
@Syntax_fa
#backend #golang
خیلی نکات جالب و مهمی رو بهش اشاره میکنه، از جمله اینکه لازمه observability pipeline رو قبل از هر چیزی راه اندازی کنید که بتونید بر اساس داده و اطلاعات تصمیم گیری کنید. این نکته خیلی مهمی هست که ما خیلی وقت ها فراموش می کنیم.
وقتی مشکل performanceی داریم اول باید در مورد مشکل مون داده و اطلاعات جمع آوری کنیم. بعدش بریم سراغ اینکه حالا چطور مشکل رو حل کنیم.
مقاله جذابیه که در مورد موارد مختلفی برای بهینه سازی صحبت میکنه از connection pooling گرفته تا ایندکس دیتابیس و goroutine throttling
Scaling Backend to 1M requests with just 2GB ram ⚡️
https://dev.to/rikenshah/scaling-backend-to-1m-requests-with-just-2gb-ram-4m0c
@gocasts
@Syntax_fa
#backend #golang
DEV Community
Avoiding Beginner Mistakes Hampering You to Scale Backend⚡️
This blog covers how I unlocked performance that allowed me to scale my backend from 50K requests →...
❤7🔥2
اگه همکار شما بودم. چیکار میکردید؟ 😂
فقط اونجا که گفتم امروز(دوشنبه) تسکارو مشخص میکنم. شنبه هفته بعد شروع کنیم
#fun
@Syntax_fa
فقط اونجا که گفتم امروز(دوشنبه) تسکارو مشخص میکنم. شنبه هفته بعد شروع کنیم
#fun
@Syntax_fa
😁18👍2
تو این مقاله، قسمتی از کتاب(طراحی سیستم پرداخت) رو توضیح داده:
https://newsletter.pragmaticengineer.com/p/designing-a-payment-system
@Syntax_fa
https://newsletter.pragmaticengineer.com/p/designing-a-payment-system
@Syntax_fa
Pragmaticengineer
Designing a Payment System
A full chapter from the newly released book System Design Interview: Volume 2.
👍6
Fluent API
یک سبک برنامهنویسی است که در آن متدها به شکلی زنجیرهای (chaining) فراخوانی میشوند تا کد خواناتر و روانتر شود.
ویژگیهای Fluent API
- خوانایی بالا: کدها به گونهای نوشته میشوند که شبیه به جملات طبیعی هستند.
- پیکربندی زنجیرهای: متدها به صورت زنجیرهای فراخوانی میشوند که به کاهش پیچیدگی و افزایش خوانایی کد کمک میکند.
- استفاده آسان: با استفاده از این روش، توسعهدهندگان میتوانند به راحتی و با کمترین پیچیدگی ممکن اشیا را پیکربندی کنند.
مثال کاربردی از Fluent API در Go
در این مثال، یک استراکت
Fluent API
یک روش قدرتمند و خوانا برای پیکربندی و تعریف اشیا و ساختارها در کد است. این روش با کاهش پیچیدگی و افزایش خوانایی کد، به توسعهدهندگان کمک میکند تا کدهای خود را به صورت کارآمدتری بنویسند.
#fluent_api
@Syntax_fa
یک سبک برنامهنویسی است که در آن متدها به شکلی زنجیرهای (chaining) فراخوانی میشوند تا کد خواناتر و روانتر شود.
ویژگیهای Fluent API
- خوانایی بالا: کدها به گونهای نوشته میشوند که شبیه به جملات طبیعی هستند.
- پیکربندی زنجیرهای: متدها به صورت زنجیرهای فراخوانی میشوند که به کاهش پیچیدگی و افزایش خوانایی کد کمک میکند.
- استفاده آسان: با استفاده از این روش، توسعهدهندگان میتوانند به راحتی و با کمترین پیچیدگی ممکن اشیا را پیکربندی کنند.
مثال کاربردی از Fluent API در Go
در این مثال، یک استراکت
Car را با استفاده از Fluent API پیکربندی میکنیم:package main
import (
"fmt"
)
type Car struct {
Model string
Color string
Year int
}
func main() {
car := Car{}.SetModel("pride").SetColor("white").SetYear(2015)
fmt.Printf("%+v", car)
}
func (car Car) SetModel(model string) Car {
car.Model = model
return car
}
func (car Car) SetColor(color string) Car {
car.Color = color
return car
}
func (car Car) SetYear(year int) Car {
car.Year = year
return car
}
Fluent API
یک روش قدرتمند و خوانا برای پیکربندی و تعریف اشیا و ساختارها در کد است. این روش با کاهش پیچیدگی و افزایش خوانایی کد، به توسعهدهندگان کمک میکند تا کدهای خود را به صورت کارآمدتری بنویسند.
#fluent_api
@Syntax_fa
👍8❤🔥1👎1
کدام گزینه درست است!
وقتی می گوییم در یک ساختمان داده عملیات(مانند get و set) با پیچیدگی زمانی O(1) انجام می شود:
وقتی می گوییم در یک ساختمان داده عملیات(مانند get و set) با پیچیدگی زمانی O(1) انجام می شود:
Anonymous Quiz
45%
زمانی که پیچیدگی زمانیO(1) باشد، یعنی تعداد عملیاتی که داشتیم، هرچقدرهم طول زیادباشد برابر با یک است
55%
ممکن است یک میلیون عمل انجام شده باشداما طول آن چه یک باشد یاچند میلیارد، پیچیدگی زمانی اش برابر است
😱9
هزینهی Raise کردن Exception و رویکرد متفاوت گولنگ
در اکثر زبان ها، استثناها (Exceptions) ابزار اصلی برای مدیریت خطاها هستند. برای مثال وقتی یک استثنا در Python رخ میدهد، سیستم اجرا (Runtime) باید کارهای زیر را انجام دهد:
1. ایجاد یک شیء استثنا: این شامل تخصیص حافظه و مقداردهی اولیه برای شیء استثنا است.
2. جمعآوری اطلاعات پشته: Python باید مسیر اجرای فعلی را بررسی کند و یک traceback ایجاد کند.
3. مدیریت جریان کنترل: سیستم اجرا باید به دنبال بلوکهای
این عملیاتها، بهویژه جمعآوری اطلاعات پشته و مدیریت جریان کنترل، هزینهبر هستند. در نتیجه، raise کردن یک استثنا در Python میتواند تاثیر منفی قابل توجهی بر عملکرد برنامه داشته باشد، به خصوص اگر استثناها به صورت مکرر رخ دهند.
رویکرد GoLang برای مدیریت خطاها
در زبان برنامهنویسی Go، مدیریت خطاها به گونهای متفاوت انجام میشود. به جای استفاده از استثناها، خطاها به عنوان مقادیر معمولی برگردانده میشوند. این رویکرد به دلایل زیر باعث افزایش عملکرد میشود:
1. عدم نیاز به مدیریت جریان کنترل پیچیده:
- در Go، خطاها به صورت مقادیر بازگشتی از توابع برگردانده میشوند. این رویکرد از مدیریت پیچیده جریان کنترل که در استثناها نیاز است، جلوگیری میکند. بنابراین، زمان و منابعی که برای جستجو و انتقال جریان کنترل در بلوکهای
2. عدم نیاز به جمعآوری اطلاعات پشته:
- وقتی یک خطا به عنوان مقدار بازگشتی مدیریت میشود، نیازی به جمعآوری اطلاعات پشته و ایجاد traceback نیست. این باعث کاهش هزینههای محاسباتی و بهبود عملکرد میشود.
3. کاهش سربار حافظه:
- ایجاد استثناها معمولاً شامل تخصیص حافظه برای شیء استثنا و اطلاعات پشته است. در مقابل، بازگرداندن یک خطا به عنوان مقدار بازگشتی نیاز به تخصیص حافظه اضافی ندارد و سربار حافظه را کاهش میدهد.
مثال از مدیریت خطا در Go
در این مثال، تابع
#exception
@Syntax_fa
در اکثر زبان ها، استثناها (Exceptions) ابزار اصلی برای مدیریت خطاها هستند. برای مثال وقتی یک استثنا در Python رخ میدهد، سیستم اجرا (Runtime) باید کارهای زیر را انجام دهد:
1. ایجاد یک شیء استثنا: این شامل تخصیص حافظه و مقداردهی اولیه برای شیء استثنا است.
2. جمعآوری اطلاعات پشته: Python باید مسیر اجرای فعلی را بررسی کند و یک traceback ایجاد کند.
3. مدیریت جریان کنترل: سیستم اجرا باید به دنبال بلوکهای
try و except بگردد و جریان اجرای برنامه را به بلوک مناسب منتقل کند.این عملیاتها، بهویژه جمعآوری اطلاعات پشته و مدیریت جریان کنترل، هزینهبر هستند. در نتیجه، raise کردن یک استثنا در Python میتواند تاثیر منفی قابل توجهی بر عملکرد برنامه داشته باشد، به خصوص اگر استثناها به صورت مکرر رخ دهند.
رویکرد GoLang برای مدیریت خطاها
در زبان برنامهنویسی Go، مدیریت خطاها به گونهای متفاوت انجام میشود. به جای استفاده از استثناها، خطاها به عنوان مقادیر معمولی برگردانده میشوند. این رویکرد به دلایل زیر باعث افزایش عملکرد میشود:
1. عدم نیاز به مدیریت جریان کنترل پیچیده:
- در Go، خطاها به صورت مقادیر بازگشتی از توابع برگردانده میشوند. این رویکرد از مدیریت پیچیده جریان کنترل که در استثناها نیاز است، جلوگیری میکند. بنابراین، زمان و منابعی که برای جستجو و انتقال جریان کنترل در بلوکهای
try و catch صرف میشود، در Go وجود ندراد.2. عدم نیاز به جمعآوری اطلاعات پشته:
- وقتی یک خطا به عنوان مقدار بازگشتی مدیریت میشود، نیازی به جمعآوری اطلاعات پشته و ایجاد traceback نیست. این باعث کاهش هزینههای محاسباتی و بهبود عملکرد میشود.
3. کاهش سربار حافظه:
- ایجاد استثناها معمولاً شامل تخصیص حافظه برای شیء استثنا و اطلاعات پشته است. در مقابل، بازگرداندن یک خطا به عنوان مقدار بازگشتی نیاز به تخصیص حافظه اضافی ندارد و سربار حافظه را کاهش میدهد.
مثال از مدیریت خطا در Go
package main
import (
"errors"
"fmt"
)
func divide(a, b int) (int, error) {
if b == 0 {
return 0, errors.New("division by zero")
}
return a / b, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Result:", result)
}
در این مثال، تابع
divide یک خطا به عنوان مقدار بازگشتی برمیگرداند. در صورت بروز خطا، نیازی به مدیریت پیچیده جریان کنترل نیست و خطا به صورت معمولی پردازش میشود.#exception
@Syntax_fa
👍6👎1👏1