ویکیکتاب
fawikibooks
https://fa.wikibooks.org/wiki/%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C
MediaWiki 1.48.0-wmf.3
first-letter
مدیا
ویژه
بحث
کاربر
بحث کاربر
ویکیکتاب
بحث ویکیکتاب
پرونده
بحث پرونده
مدیاویکی
بحث مدیاویکی
الگو
بحث الگو
راهنما
بحث راهنما
رده
بحث رده
کتابآشپزی
بحث کتابآشپزی
ویکیکودک
بحث ویکیکودک
موضوع
بحث موضوع
TimedText
TimedText talk
پودمان
بحث پودمان
Event
Event talk
آموزش کامل خط فرمان ویندوز
0
39203
136176
128734
2026-11-06T12:30:03Z
Fwldom
26269
/* فهرست */
136176
wikitext
text/x-wiki
{{برگزیدگی|1}}
[[پرونده:Book CMD.png|بندانگشتی|جایگزین=Command Prompt|نگاره کتاب آموزش کامل خط فرمان ویندوز]]
{{چاپ|نسخه چاپی|example=[[آموزش کامل خط فرمان ویندوز/نسخه چاپی]]}}
== '''فهرست''' ==
<big>
:فصل نخست [[آموزش کامل خط فرمان ویندوز/آشنایی با خط فرمان و دستورات پایه آن| آشنایی با خط فرمان و دستورات پایه آن]]
:فصل دوم [[آموزش کامل خط فرمان ویندوز/شخصی سازی محیط خط فرمان|شخصی سازی محیط خط فرمان]]
:فصل سوم [[آموزش کامل خط فرمان ویندوز/دستورات پیشرفته خط فرمان|دستورات پیشرفته خط فرمان]]
:فصل چهارم [[آموزش کامل خط فرمان ویندوز/آشنایی با پاورشل|آشنایی با پاورشل]]
:فصل پنجم [[آموزش کامل خط فرمان ویندوز/سوییچها یا گزینهها برای دستورات خط فرمان|سوییچها یا گزینهها برای دستورات خط فرمان]]
:فصل ششم [[آموزش کامل خط فرمان ویندوز/نوشتن فایلهای Batch|نوشتن فایلهای Batch]]
:فصل هفتم [[آموزش کامل خط فرمان ویندوز/دستورات تکمیلی خط فرمان|دستورات تکمیلی خط فرمان]]
:فصل هشتم [[آموزش کامل خط فرمان ویندوز/بخش پایانی آموزش کامل خط فرمان ویندوز|بخش پایانی آموزش کامل خط فرمان ویندوز]]
</big>
[[رده:آموزش کامل خط فرمان ویندوز]]
rg8yvxfkn882ov6l6k3f9o9k7nfgwkz
آموزش کامل خط فرمان ویندوز/نوشتن فایلهای Batch
0
39319
136174
134977
2026-11-06T12:29:50Z
Fwldom
26269
Fwldom صفحهٔ [[آموزش کامل خط فرمان ویندوز /نوشتن فایلهای Batch]] را به [[آموزش کامل خط فرمان ویندوز/نوشتن فایلهای Batch]] منتقل کرد
134977
wikitext
text/x-wiki
{{ناوبری خودکار}}
فایلهای batch یا دستهای فایلهایی هستند که دستورات خط فرمان در آن نوشته میشوند و اجرا میشوند.
برای ساخت فایل batch باید یک فایل با پسوند .bat درست کنید.
و دستورات را داخل آن گذاشته و cmd را باز کرده ابتدا دایرکتوری را به همان دایرکتوری که فایل در آن قرار دارد با دستور cd تغییر میدهیم و سپس نام فایل به همراه پسوند را تایپ میکنیم.
<syntaxhighlight lang="batch">
cd targetFolder
./name.bat
</syntaxhighlight>
* دستور نخست برای رفتن به پوشهای هست که فایل batch را داخل آن ایجاد کردم.
* دستور دوم برای اجرای فایل هست و name.bat نام فایل مدنظرمان بهمراه پسوند .bat است.
== echo off@ ==
دستور echo off به سیستم اعلام میکند در زمان اجرای فایل دستورات وارد شده را نمایش ندهد و فقط خروجی را نمایش دهد.
{{سخ}}
توجه: دستورات cmd میتواند خطرناک یا ویروسی باشد.{{سخ}}
[[رده:آموزش کامل خط فرمان ویندوز]]
q8zibgigbss5toe840efwjtkrswpbr7
136177
136174
2026-11-06T12:33:08Z
Fwldom
26269
136177
wikitext
text/x-wiki
{{ناوبری خودکار}}
فایلهای '''Batch''' (یا فایلهای دستهای) فایلهای متنی سادهای هستند که مجموعهای از دستورات خط فرمان را بهترتیب در خود ذخیره میکنند. با اجرای این فایلها، تمام دستورات نوشتهشده در آن بهصورت خودکار و پشتسرهم اجرا میشوند. پسوند این فایلها معمولاً '''.bat''' یا '''.cmd''' است.
== ساخت فایل Batch ==
برای ساخت یک فایل Batch:
# روی فضای خالی دسکتاپ یا هر پوشهای راستکلیک کنید.
# گزینهٔ '''New''' → '''Text Document''' را انتخاب کنید.
# نام فایل را به همراه پسوند تغییر دهید (مثلاً <code>myscript.bat</code>).
# اگر ویندوز پسوند فایل را نشان نمیدهد، از تنظیمات File Explorer گزینهٔ «File name extensions» را فعال کنید.
# روی فایل راستکلیک کرده و '''Edit''' را انتخاب کنید (یا با Notepad باز کنید).
# دستورات مورد نظر را بنویسید و فایل را ذخیره کنید.
=== اجرای فایل Batch ===
روشهای رایج برای اجرا:
* دوبار کلیک روی فایل
* راستکلیک و انتخاب '''Open'''
* باز کردن CMD و تایپ نام فایل (همراه با مسیر در صورت نیاز)
مثال:
<syntaxhighlight lang="bat">
cd C:\Users\Username\Desktop
myscript.bat
</syntaxhighlight>
== ساختار پایه یک فایل Batch ==
هر فایل Batch معمولاً با خط زیر شروع میشود تا دستورات خود فایل در هنگام اجرا نمایش داده نشوند:
<syntaxhighlight lang="bat">
@echo off
</syntaxhighlight>
علامت <code>@</code> جلوی دستور باعث میشود خود آن خط هم نمایش داده نشود.
=== نمایش متن و توقف اجرا ===
<syntaxhighlight lang="bat">
@echo off
echo سلام دنیا
echo.
echo این یک خط خالی است
pause
</syntaxhighlight>
* <code>echo</code> متن را نمایش میدهد.
* <code>echo.</code> یک خط خالی چاپ میکند.
* <code>pause</code> اجرای اسکریپت را متوقف کرده و منتظر فشردن یک کلید میماند.
=== تنظیم عنوان پنجره ===
<syntaxhighlight lang="bat">
@echo off
title اسکریپت پشتیبانگیری من
echo این یک فایل Batch است
pause
</syntaxhighlight>
=== نوشتن توضیح (کامنت) ===
<syntaxhighlight lang="bat">
@echo off
rem این یک توضیح است
:: این هم یک توضیح است
echo متن اصلی
</syntaxhighlight>
خطوطی که با <code>rem</code> یا <code>::</code> شروع میشوند اجرا نمیشوند.
== متغیرها در فایل Batch ==
برای تعریف متغیر از دستور <code>set</code> استفاده میشود:
<syntaxhighlight lang="bat">
@echo off
set name=علی
set age=25
echo نام: %name%
echo سن: %age%
pause
</syntaxhighlight>
=== دریافت ورودی از کاربر ===
<syntaxhighlight lang="bat">
@echo off
set /p username=نام خود را وارد کنید:
echo سلام %username%
pause
</syntaxhighlight>
=== محاسبات عددی ===
<syntaxhighlight lang="bat">
@echo off
set /a result=10+5
echo نتیجه: %result%
set /a result=%result%*2
echo نتیجه جدید: %result%
pause
</syntaxhighlight>
== ساختارهای کنترلی ==
=== دستور if ===
<syntaxhighlight lang="bat">
@echo off
set /p answer=آیا میخواهید ادامه دهید؟ (بله/خیر):
if /i "%answer%"=="بله" (
echo ادامه میدهیم...
) else (
echo برنامه متوقف شد.
)
pause
</syntaxhighlight>
بررسی وجود فایل:
<syntaxhighlight lang="bat">
@echo off
if exist "file.txt" (
echo فایل وجود دارد.
) else (
echo فایل پیدا نشد.
)
pause
</syntaxhighlight>
=== دستور for ===
<syntaxhighlight lang="bat">
@echo off
for %%f in (*.txt) do (
echo فایل پیدا شد: %%f
)
pause
</syntaxhighlight>
حلقهٔ عددی:
<syntaxhighlight lang="bat">
@echo off
for /l %%i in (1,1,5) do (
echo عدد: %%i
)
pause
</syntaxhighlight>
=== دستور goto و برچسبها ===
<syntaxhighlight lang="bat">
@echo off
echo شروع برنامه
goto next
echo این خط اجرا نمیشود
:next
echo به اینجا پریدیم
pause
</syntaxhighlight>
برای پایان دادن به اسکریپت:
<syntaxhighlight lang="bat">
goto :eof
</syntaxhighlight>
یا:
<syntaxhighlight lang="bat">
exit /b
</syntaxhighlight>
== مثالهای کامل فایل Batch ==
=== مثال ۱: نمایش اطلاعات ساده ===
<syntaxhighlight lang="bat">
@echo off
title اطلاعات سیستم
cls
echo ==============================
echo اطلاعات سیستم
echo ==============================
echo.
echo نام کاربر: %username%
echo نام رایانه: %computername%
echo تاریخ: %date%
echo ساعت: %time%
echo.
pause
</syntaxhighlight>
=== مثال ۲: منوی ساده ===
<syntaxhighlight lang="bat">
@echo off
:menu
cls
echo ==============================
echo منوی اصلی
echo ==============================
echo 1. نمایش تاریخ و ساعت
echo 2. پاک کردن صفحه
echo 3. خروج
echo.
set /p choice=گزینه مورد نظر را وارد کنید:
if "%choice%"=="1" goto date
if "%choice%"=="2" goto clear
if "%choice%"=="3" exit
goto menu
:date
echo تاریخ: %date%
echo ساعت: %time%
pause
goto menu
:clear
cls
goto menu
</syntaxhighlight>
=== مثال ۳: پشتیبانگیری ساده ===
<syntaxhighlight lang="bat">
@echo off
title پشتیبانگیری
set source=C:\Documents
set destination=D:\Backup
if not exist "%destination%" mkdir "%destination%"
echo در حال کپی فایلها...
xcopy "%source%\*.*" "%destination%\" /E /Y /I
echo.
echo پشتیبانگیری با موفقیت انجام شد.
pause
</syntaxhighlight>
== نکات مهم در نوشتن فایلهای Batch ==
* همیشه فایلهای Batch را قبل از اجرا بررسی کنید؛ زیرا میتوانند دستورات خطرناکی داشته باشند.
* از اجرای فایلهای Batch ناشناس و دانلودشده از منابع نامعتبر خودداری کنید.
* برای تست اسکریپتها، ابتدا روی فایلها و پوشههای غیرمهم آزمایش کنید.
* اگر اسکریپت نیاز به دسترسی مدیر دارد، روی فایل راستکلیک کرده و گزینهٔ '''Run as administrator''' را انتخاب کنید.
* برای توقف اجرای یک اسکریپت در حال اجرا، کلیدهای <code>Ctrl + C</code> را فشار دهید.
* از <code>setlocal</code> و <code>endlocal</code> برای محدود کردن تغییرات متغیرها به داخل اسکریپت استفاده کنید.
== جمعبندی ==
فایلهای Batch ابزاری ساده و قدرتمند برای خودکارسازی کارهای تکراری در ویندوز هستند. با ترکیب ساختار پایه، متغیرها و ساختارهای کنترلی میتوانید اسکریپتهای مفیدی برای کارهای روزمره بنویسید.
[[رده:آموزش کامل خط فرمان ویندوز]]
73o9ma03vlz2ernrt3vjp1tgigd8v4y
زبان برنامهنویسی گو
0
39985
136170
135583
2026-11-06T12:25:58Z
Fwldom
26269
/* فصل ۶: بستهها و ماژولها پرونده:25 percent.svg */
136170
wikitext
text/x-wiki
{{وضعیت|50%}}
{{در دست ویرایش ۲|ماه=می|روز=۱۲|سال=۲۰۲۷}}
== دربارهٔ کتاب ==
[[پرونده:Go Logo Blue.svg|بندانگشتی|چپ|نگاره زبان برنامهنویسی گو]]
این کتاب به آموزش جامع و گامبهگام زبان برنامهنویسی '''گو''' (به انگلیسی: ''Go'') میپردازد. زبان برنامهنویسی گو که توسط شرکت گوگل توسعه یافته است، به دلیل سادگی، سرعت بالا و پشتیبانی قوی از همزمانی (Concurrency) بهسرعت به یکی از زبانهای محبوب در حوزهٔ توسعهٔ نرمافزار، بهویژه در زمینهٔ سامانههای مقیاسپذیر و برنامههای تحت وب، تبدیل شده است.
این کتاب با زبانی روان و آموزشی تهیه شده و تلاش شده است تا علاوه بر بیان مفاهیم نظری، نمونهکدهای کاربردی و مثالهای عملی نیز ارائه گردد. هدف از نگارش این اثر آن است که خوانندگان با مفاهیم پایه تا مباحث پیشرفتهٔ این زبان آشنا شوند و توانایی استفادهٔ عملی از آن را در پروژههای مختلف به دست آورند.
مطالعهٔ این کتاب به علاقهمندان برنامهنویسی، دانشجویان، و همچنین برنامهنویسان حرفهای توصیه میشود که قصد دارند زبان گو را بهعنوان ابزاری قدرتمند برای توسعهٔ نرمافزار بیاموزند و در عمل بهکار گیرند.
== فهرست ==
{{Stages}}
<!--
* [[پرونده:00%.svg]]
* [[پرونده:25%.svg]]
* [[پرونده:50%.svg]]
* [[پرونده:75%.svg]]
* [[پرونده:100 percent.svg]]
-->
=== فصل نخست [[پرونده:100 percent.svg]] ===
* [[زبان برنامهنویسی گو/مقدمه|مقدمه]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/اولین برنامه|اولین برنامه و اجرای آن]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/ساختارکد|ساختار کد زبان برنامه نویسی گو]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/عناصر لغوی|عناصر لغوی ]] [[پرونده:100 percent.svg]]
=== فصل ۲: مبانی[[پرونده:100 percent.svg]]===
* [[زبان برنامهنویسی گو/متغیرها|متغیرها]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/ثابتها|ثابتها]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/تایپها (نوعها)|تایپها (نوعها)]] [[پرونده:100 percent.svg]]
=== فصل ۳: شرطها و حلقهها [[پرونده:100 percent.svg]] ===
* [[زبان برنامهنویسی گو/بلوکهای کد|بلوکهای کد]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/عملگرها و عبارات|عملگرها و عبارات]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/شرطها|شرطها در گو]] [[پرونده:100 percent.svg]]
* [[زبان برنامه نویسی گو/حلقهها|حلقهها]] [[پرونده:100 percent.svg]]
=== فصل ۴: ساختارهای دادهای پایه آرایهها [[پرونده:50 percent.svg]] ===
*[[زبان برنامهنویسی گو/اسلایسها|اسلایسها (Slices)]] [[پرونده:100 percent.svg]]
*[[زبان برنامهنویسی گو/نقشهها (Maps)|نقشهها (Maps)]] [[پرونده:100 percent.svg]]
*[[زبان برنامهنویسی گو/ساختارها (Structs)|ساختارها (Structs)]] [[پرونده:00 percent.svg]]
*[[زبان برنامهنویسی گو/اشارهگرها (Pointers)|اشارهگرها (Pointers)]] [[پرونده:00 percent.svg]]
=== فصل ۵: توابع [[پرونده:100 percent.svg]] ===
* [[زبان برنامهنویسی گو/تعریف و استفاده از توابع|تعریف و استفاده از توابع]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/آرگومانها و مقادیر بازگشتی|آرگومانها و مقادیر بازگشتی]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/توابع ناشناس و توابع به عنوان مقادیر|توابع ناشناس و توابع به عنوان مقادیر]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/متدها و دریافتکنندهها|متدها و دریافتکنندهها (Receivers)]] [[پرونده:100 percent.svg]]
=== فصل ۶: بستهها و ماژولها [[پرونده:25 percent.svg]] ===
* [[زبان برنامهنویسی گو/ساختار و نحوه استفاده از بستهها|ساختار و نحوه استفاده از بستهها (Packages)]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/مدیریت وابستگیها با استفاده از ماژولها|مدیریت وابستگیها با استفاده از ماژولها (Modules)]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/استفاده از بستههای استاندارد گو|استفاده از بستههای استاندارد Go]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/ایجاد و استفاده از بستههای شخصیسازی شده|ایجاد و استفاده از بستههای شخصیسازی شده]] [[پرونده:00 percent.svg]]
=== فصل ۷: برنامهنویسی همزمان (Concurrency) ===
* [[زبان برنامهنویسی گو/مفاهیم همزمانی|مفاهیم همزمانی در Go]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/گوروتینها|گوروتینها (Goroutines)]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/کانالها|کانالها (Channels)]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/الگوهای همزمانی|الگوهای پیشرفته همزمانی]] [[پرونده:00 percent.svg]]
=== فصل ۸: مدیریت خطا و تست [[پرونده:50 percent.svg]] ===
* [[زبان برنامهنویسی گو/مدیریت خطاها|مدیریت خطاها در Go]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/اصول نوشتن کدها|اصول نوشتن کدهای ایمن]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/تست واحد|تست واحد (Unit Testing)]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/تست یکپارچگی|تست یکپارچگی (Integration Testing)]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/ابزارهای تست|ابزارهای تست در Go]] [[پرونده:00 percent.svg]]
=== فصل ۹: برنامهنویسی پیشرفته در Go ===
* [[زبان برنامهنویسی گو/اینترفیسها و پلیمورفیسم|اینترفیسها و پلیمورفیسم]] [[پرونده:25 percent.svg]]
* [[زبان برنامهنویسی گو/بازتاب|بازتاب (Reflection)]] [[پرونده:25 percent.svg]]
* [[زبان برنامهنویسی گو/کار با فایلها و سیستمعامل|کار با فایلها و سیستمعامل]] [[پرونده:25 percent.svg]]
* [[زبان برنامهنویسی گو/برنامهنویسی شبکه|برنامهنویسی شبکه (Networking)]] [[پرونده:25 percent.svg]]
* [[زبان برنامهنویسی گو/کار با دیتابیسها|کار با دیتابیسها]] [[پرونده:25 percent.svg]]
=== فصل ۱۰: بهینهسازی و ابزارهای کاربردی ===
* بهینهسازی عملکرد و حافظه
* پروفایلینگ و دیباگینگ
* استفاده از ابزارهای توسعه Go
* مدیریت پروژههای بزرگ
=== فصل ۱۱: پروژههای کاربردی ===
* ساخت یک وبسرویس ساده
* ساخت یک ابزار خط فرمان (CLI)
* توسعه یک برنامه توزیعشده با Go
=== فصل ۱۲: منابع بیشتر و مسیرهای یادگیری [[پرونده:25 percent.svg]] ===
* [[زبان برنامهنویسی گو/منابع آموزشی آنلاین|منابع آموزشی آنلاین]] [[پرونده:100 percent.svg]]
* جامعههای برنامهنویسی Go [[پرونده:00 percent.svg]]
* پروژههای متنباز برای مشارکت [[پرونده:00 percent.svg]]
* پیوستها [[پرونده:00 percent.svg]]
* مرجع دستورات Go [[پرونده:00 percent.svg]]
* سوالات متداول [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/حل تمرینها|حل تمرینها]] [[پرونده:50 percent.svg]]
[[رده:زبان برنامهنویسی گو]]
eky4dpb4nezhturmybwq1igpq0uc1mb
136173
136170
2026-11-06T12:28:40Z
Fwldom
26269
/* فصل ۶: بستهها و ماژولها پرونده:25 percent.svg */
136173
wikitext
text/x-wiki
{{وضعیت|50%}}
{{در دست ویرایش ۲|ماه=می|روز=۱۲|سال=۲۰۲۷}}
== دربارهٔ کتاب ==
[[پرونده:Go Logo Blue.svg|بندانگشتی|چپ|نگاره زبان برنامهنویسی گو]]
این کتاب به آموزش جامع و گامبهگام زبان برنامهنویسی '''گو''' (به انگلیسی: ''Go'') میپردازد. زبان برنامهنویسی گو که توسط شرکت گوگل توسعه یافته است، به دلیل سادگی، سرعت بالا و پشتیبانی قوی از همزمانی (Concurrency) بهسرعت به یکی از زبانهای محبوب در حوزهٔ توسعهٔ نرمافزار، بهویژه در زمینهٔ سامانههای مقیاسپذیر و برنامههای تحت وب، تبدیل شده است.
این کتاب با زبانی روان و آموزشی تهیه شده و تلاش شده است تا علاوه بر بیان مفاهیم نظری، نمونهکدهای کاربردی و مثالهای عملی نیز ارائه گردد. هدف از نگارش این اثر آن است که خوانندگان با مفاهیم پایه تا مباحث پیشرفتهٔ این زبان آشنا شوند و توانایی استفادهٔ عملی از آن را در پروژههای مختلف به دست آورند.
مطالعهٔ این کتاب به علاقهمندان برنامهنویسی، دانشجویان، و همچنین برنامهنویسان حرفهای توصیه میشود که قصد دارند زبان گو را بهعنوان ابزاری قدرتمند برای توسعهٔ نرمافزار بیاموزند و در عمل بهکار گیرند.
== فهرست ==
{{Stages}}
<!--
* [[پرونده:00%.svg]]
* [[پرونده:25%.svg]]
* [[پرونده:50%.svg]]
* [[پرونده:75%.svg]]
* [[پرونده:100 percent.svg]]
-->
=== فصل نخست [[پرونده:100 percent.svg]] ===
* [[زبان برنامهنویسی گو/مقدمه|مقدمه]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/اولین برنامه|اولین برنامه و اجرای آن]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/ساختارکد|ساختار کد زبان برنامه نویسی گو]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/عناصر لغوی|عناصر لغوی ]] [[پرونده:100 percent.svg]]
=== فصل ۲: مبانی[[پرونده:100 percent.svg]]===
* [[زبان برنامهنویسی گو/متغیرها|متغیرها]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/ثابتها|ثابتها]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/تایپها (نوعها)|تایپها (نوعها)]] [[پرونده:100 percent.svg]]
=== فصل ۳: شرطها و حلقهها [[پرونده:100 percent.svg]] ===
* [[زبان برنامهنویسی گو/بلوکهای کد|بلوکهای کد]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/عملگرها و عبارات|عملگرها و عبارات]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/شرطها|شرطها در گو]] [[پرونده:100 percent.svg]]
* [[زبان برنامه نویسی گو/حلقهها|حلقهها]] [[پرونده:100 percent.svg]]
=== فصل ۴: ساختارهای دادهای پایه آرایهها [[پرونده:50 percent.svg]] ===
*[[زبان برنامهنویسی گو/اسلایسها|اسلایسها (Slices)]] [[پرونده:100 percent.svg]]
*[[زبان برنامهنویسی گو/نقشهها (Maps)|نقشهها (Maps)]] [[پرونده:100 percent.svg]]
*[[زبان برنامهنویسی گو/ساختارها (Structs)|ساختارها (Structs)]] [[پرونده:00 percent.svg]]
*[[زبان برنامهنویسی گو/اشارهگرها (Pointers)|اشارهگرها (Pointers)]] [[پرونده:00 percent.svg]]
=== فصل ۵: توابع [[پرونده:100 percent.svg]] ===
* [[زبان برنامهنویسی گو/تعریف و استفاده از توابع|تعریف و استفاده از توابع]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/آرگومانها و مقادیر بازگشتی|آرگومانها و مقادیر بازگشتی]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/توابع ناشناس و توابع به عنوان مقادیر|توابع ناشناس و توابع به عنوان مقادیر]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/متدها و دریافتکنندهها|متدها و دریافتکنندهها (Receivers)]] [[پرونده:100 percent.svg]]
=== فصل ۶: بستهها و ماژولها [[پرونده:50 percent.svg]] ===
* [[زبان برنامهنویسی گو/ساختار و نحوه استفاده از بستهها|ساختار و نحوه استفاده از بستهها (Packages)]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/مدیریت وابستگیها با استفاده از ماژولها|مدیریت وابستگیها با استفاده از ماژولها (Modules)]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/استفاده از بستههای استاندارد گو|استفاده از بستههای استاندارد Go]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/ایجاد و استفاده از بستههای شخصیسازی شده|ایجاد و استفاده از بستههای شخصیسازی شده]] [[پرونده:00 percent.svg]]
=== فصل ۷: برنامهنویسی همزمان (Concurrency) ===
* [[زبان برنامهنویسی گو/مفاهیم همزمانی|مفاهیم همزمانی در Go]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/گوروتینها|گوروتینها (Goroutines)]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/کانالها|کانالها (Channels)]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/الگوهای همزمانی|الگوهای پیشرفته همزمانی]] [[پرونده:00 percent.svg]]
=== فصل ۸: مدیریت خطا و تست [[پرونده:50 percent.svg]] ===
* [[زبان برنامهنویسی گو/مدیریت خطاها|مدیریت خطاها در Go]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/اصول نوشتن کدها|اصول نوشتن کدهای ایمن]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/تست واحد|تست واحد (Unit Testing)]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/تست یکپارچگی|تست یکپارچگی (Integration Testing)]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/ابزارهای تست|ابزارهای تست در Go]] [[پرونده:00 percent.svg]]
=== فصل ۹: برنامهنویسی پیشرفته در Go ===
* [[زبان برنامهنویسی گو/اینترفیسها و پلیمورفیسم|اینترفیسها و پلیمورفیسم]] [[پرونده:25 percent.svg]]
* [[زبان برنامهنویسی گو/بازتاب|بازتاب (Reflection)]] [[پرونده:25 percent.svg]]
* [[زبان برنامهنویسی گو/کار با فایلها و سیستمعامل|کار با فایلها و سیستمعامل]] [[پرونده:25 percent.svg]]
* [[زبان برنامهنویسی گو/برنامهنویسی شبکه|برنامهنویسی شبکه (Networking)]] [[پرونده:25 percent.svg]]
* [[زبان برنامهنویسی گو/کار با دیتابیسها|کار با دیتابیسها]] [[پرونده:25 percent.svg]]
=== فصل ۱۰: بهینهسازی و ابزارهای کاربردی ===
* بهینهسازی عملکرد و حافظه
* پروفایلینگ و دیباگینگ
* استفاده از ابزارهای توسعه Go
* مدیریت پروژههای بزرگ
=== فصل ۱۱: پروژههای کاربردی ===
* ساخت یک وبسرویس ساده
* ساخت یک ابزار خط فرمان (CLI)
* توسعه یک برنامه توزیعشده با Go
=== فصل ۱۲: منابع بیشتر و مسیرهای یادگیری [[پرونده:25 percent.svg]] ===
* [[زبان برنامهنویسی گو/منابع آموزشی آنلاین|منابع آموزشی آنلاین]] [[پرونده:100 percent.svg]]
* جامعههای برنامهنویسی Go [[پرونده:00 percent.svg]]
* پروژههای متنباز برای مشارکت [[پرونده:00 percent.svg]]
* پیوستها [[پرونده:00 percent.svg]]
* مرجع دستورات Go [[پرونده:00 percent.svg]]
* سوالات متداول [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/حل تمرینها|حل تمرینها]] [[پرونده:50 percent.svg]]
[[رده:زبان برنامهنویسی گو]]
2ed8i4his1zr1uazvafj5ndpmzcvrhq
زبان برنامهنویسی گو/ساختار و نحوه استفاده از بستهها
0
41329
136172
135367
2026-11-06T12:28:11Z
Fwldom
26269
اصلاح ارقام
136172
wikitext
text/x-wiki
{{ناوبری|قبلی=متدها و دریافتکنندهها|فعلی=ساختار و نحوه استفاده از بستهها|بعدی=مدیریت وابستگیها با استفاده از ماژولها}}
== ساختار برنامههای گو ==
هر برنامهی گو از بستهها (Packages) ساخته شده است. برنامهها از یک بسته اصلی به نام <code>main</code> شروع میشوند که نقطه ورودی برنامه، یعنی تابع <code>main</code> را شامل میشود.
=== اجزای یک برنامه ساده گو ===
یک برنامهی حداقلی گو شامل موارد زیر است:
# تعریف بسته (<code>package</code>)
# وارد کردن بستههای مورد نیاز (<code>import</code>)
# تعریف تابع اصلی (<code>func main</code>)
مثال برنامه "سلام دنیا":
<syntaxhighlight lang="go">
package main
import "fmt"
func main() {
fmt.Println("سلام دنیا!")
}
</syntaxhighlight>
== بستهها (Packages) در زبان گو ==
بستهها واحدهای سازماندهی کد در زبان Go هستند. هر فایل Go باید در ابتدای خود نام بسته را داشته باشد.
* بستهها به گروهبندی کدهای مرتبط کمک میکنند.
* بستهی <code>main</code> مشخص میکند برنامه اجرایی است.
* بستههای غیر <code>main</code> معمولا کتابخانه یا کدهای قابل استفاده مجدد را تعریف میکنند.
* هر بسته میتواند شامل توابع، متغیرها، ساختارها (structs) و اینترفیسها باشد.
=== تعریف بسته ===
در ابتدای هر فایل باید نام بسته مشخص شود، برای مثال:
<syntaxhighlight lang="go">
package greetings
</syntaxhighlight>
== وارد کردن بستهها (Import) ==
برای استفاده از قابلیتهای بستههای دیگر، باید آنها را وارد (<code>import</code>) کنید. وارد کردن به دو شکل انجام میشود:
* وارد کردن تکی:
<syntaxhighlight lang="go">
import "fmt"
</syntaxhighlight>
* وارد کردن چندتایی با پرانتز:
<syntaxhighlight lang="go">
import (
"fmt"
"math/rand"
)
</syntaxhighlight>
== بستههای استاندارد ==
زبان Go دارای مجموعه بزرگی از بستههای استاندارد است که امکانات متنوعی را فراهم میکنند، مانند:
* <code>fmt</code> برای ورودی/خروجی متنی
* <code>math</code> و <code>math/rand</code> برای عملیات ریاضی و تولید اعداد تصادفی
* <code>net/http</code> برای برنامهنویسی شبکه و وب
* <code>os</code> برای تعامل با سیستمعامل
== ساختار و استفاده از بستههای سفارشی ==
برای ساخت بستههای اختصاصی میتوانید در یک پوشه جداگانه فایلهای Go ایجاد کنید و نام بسته را در ابتدای فایل مشخص کنید.
مثال بستهای به نام <code>greetings</code>:
<syntaxhighlight lang="go">
// فایل greetings/greetings.go
package greetings
import "fmt"
// تابعی برای نمایش پیام خوشآمدگویی
func SayHello(name string) {
fmt.Printf("سلام، %s!\n", name)
}
</syntaxhighlight>
و برای استفاده از این بسته در برنامه اصلی:
<syntaxhighlight lang="go">
package main
import "yourmodule/greetings" // مسیر ماژول خود را وارد کنید
func main() {
greetings.SayHello("علی")
}
</syntaxhighlight>
== مدیریت ماژولها و وارد کردن بستهها ==
از نسخه Go 1.11 به بعد، سیستم مدیریت ماژولها (Go Modules) معرفی شده است که امکان مدیریت وابستگیها و بستهها را آسان میکند.
برای فعالسازی ماژول در پروژه:
<syntaxhighlight lang="bash">
go mod init yourmodule
</syntaxhighlight>
برای اضافه کردن بستههای خارجی از دستور:
<syntaxhighlight lang="bash">
go get example.com/some/package
</syntaxhighlight>
== قوانین نامگذاری بستهها ==
* نام بسته باید کوتاه و به زبان انگلیسی باشد.
* معمولاً نام بسته مطابق با نام پوشه است.
* نام بسته باید معرف وظیفه و محتوای آن باشد.
* در بستهها از حروف کوچک استفاده میشود و فاصله یا کاراکترهای خاص مجاز نیست.
== ساختار پوشهها و بستهها در پروژههای بزرگ ==
برای مدیریت پروژههای بزرگ، معمولاً ساختار دایرکتوری به این شکل است:
<code>
/yourmodule
/cmd # فایلهای اجرایی (main packages)
/pkg # کتابخانههای عمومی
/internal # کدهای خصوصی ماژول
/greetings # بسته greetings
</code>
== نکات مهم در استفاده از بستهها ==
* تنها توابع، متغیرها و نوعهایی که نام آنها با حرف بزرگ شروع شود (Capitalized) برای بستههای دیگر قابل دسترسیاند (public).
* نامهای با حرف کوچک خصوصی (private) به همان بسته محدود میشوند.
* برای دسترسی به اعضای بسته، نام بسته به عنوان پیشوند استفاده میشود، مانند <code>fmt.Println</code>.
== جمعبندی ==
* زبان Go بر پایه بستهها ساخته شده است که کد را سازماندهی و قابل استفاده مجدد میکنند.
* هر فایل Go باید یک بسته مشخص داشته باشد.
* بسته <code>main</code> برای برنامههای اجرایی و بستههای دیگر برای کتابخانهها استفاده میشود.
* با استفاده از کلیدواژه <code>import</code> میتوانید بستههای استاندارد و سفارشی را وارد کنید.
* سیستم مدیریت ماژول (Go Modules) وابستگیها را سادهتر میکند.
* نامگذاری و ساختار مناسب بستهها کلید نگهداری و توسعه راحت کدهای بزرگ است.
[[رده:زبان برنامهنویسی گو]]
f0l0wtsbstf7pb0azdl8fcjtrz3pv6t
زبان برنامهنویسی گو/مدیریت وابستگیها با استفاده از ماژولها
0
42296
136168
2026-11-06T12:25:23Z
Fwldom
26269
صفحهای تازه حاوی «== مدیریت وابستگیها با استفاده از ماژولها == در زبان برنامهنویسی گو، '''ماژول''' (Module) واحد اصلی مدیریت وابستگیها است. یک ماژول مجموعهای از بستههای مرتبط است که با هم نسخهبندی میشوند و توسط فایل <code>go.mod</code> در ریشهٔ درخت منبع تعریف می...» ایجاد کرد
136168
wikitext
text/x-wiki
== مدیریت وابستگیها با استفاده از ماژولها ==
در زبان برنامهنویسی گو، '''ماژول''' (Module) واحد اصلی مدیریت وابستگیها است. یک ماژول مجموعهای از بستههای مرتبط است که با هم نسخهبندی میشوند و توسط فایل <code>go.mod</code> در ریشهٔ درخت منبع تعریف میشود.
از نسخهٔ ۱٫۱۱ گو، سیستم ماژولها معرفی شد و از نسخهٔ ۱٫۱۴ به بعد بهعنوان روش استاندارد و پیشنهادی مدیریت وابستگیها شناخته میشود. این سیستم جایگزین کامل روش قدیمی مبتنی بر <code>GOPATH</code> شده است.
برای آشنایی اولیه با مفهوم بستهها و ساختار پروژه به صفحهٔ [[زبان برنامهنویسی گو/ساختار و نحوه استفاده از بستهها]] مراجعه کنید. آن صفحه تنها معرفی مختصری از ماژولها دارد؛ ادامهٔ مطلب بهطور کامل در اینجا توضیح داده میشود.
=== فایل go.mod ===
فایل <code>go.mod</code> قلب سیستم ماژولها است و شامل دستورات اصلی زیر میشود:
* <code>module</code>: مسیر ماژول (معمولاً همان مسیر مخزن)
* <code>go</code>: حداقل نسخهٔ زبان گو مورد نیاز
* <code>require</code>: وابستگیهای مستقیم و غیرمستقیم همراه با نسخه
* <code>replace</code>: جایگزینی یک ماژول با نسخهٔ محلی یا ماژول دیگر
* <code>exclude</code>: حذف نسخههای خاص یک ماژول
* <code>retract</code>: اعلام نسخههای مشکلدار
نمونهٔ ساده:
<syntaxhighlight lang="go">
module example.com/myproject
go 1.22
require (
github.com/gorilla/mux v1.8.1
golang.org/x/text v0.14.0
)
</syntaxhighlight>
فایل <code>go.sum</code> نیز بهطور خودکار ساخته میشود و شامل هشهای رمزنگاریشدهٔ محتوا برای تضمین یکپارچگی و امنیت وابستگیها است. این دو فایل باید همیشه با هم در کنترل نسخه نگهداری شوند.
=== ایجاد ماژول جدید ===
برای شروع یک پروژهٔ جدید:
<syntaxhighlight lang="bash">
mkdir myproject
cd myproject
go mod init example.com/myproject
</syntaxhighlight>
دستور <code>go mod init</code> فایل <code>go.mod</code> را ایجاد میکند و مسیر ماژول را ثبت مینماید.
=== افزودن و مدیریت وابستگیها ===
برای افزودن یک وابستگی جدید معمولاً از دستور <code>go get</code> استفاده میشود:
<syntaxhighlight lang="bash">
go get github.com/gorilla/mux@v1.8.1
</syntaxhighlight>
یا برای دریافت آخرین نسخهٔ پایدار:
<syntaxhighlight lang="bash">
go get github.com/gorilla/mux@latest
</syntaxhighlight>
دستورهای پرکاربرد دیگر:
* <code>go mod tidy</code>: وابستگیهای استفادهنشده را حذف و وابستگیهای گمشده را اضافه میکند (مهمترین دستور روزمره).
* <code>go mod download</code>: تمام وابستگیها را در کش محلی دانلود میکند.
* <code>go mod vendor</code>: وابستگیها را در پوشهٔ <code>vendor</code> کپی میکند (مناسب برای محیطهایی که دسترسی به اینترنت محدود است).
* <code>go list -m all</code>: فهرست تمام ماژولهای مورد نیاز (مستقیم و غیرمستقیم) را نمایش میدهد.
* <code>go mod graph</code>: گراف وابستگیها را نشان میدهد.
* <code>go mod why <package></code>: دلیل نیاز به یک بسته را توضیح میدهد.
* <code>go mod verify</code>: صحت محتوا و هشهای <code>go.sum</code> را بررسی میکند.
=== نسخهبندی معنایی (Semantic Versioning) ===
گو از نسخهبندی معنایی پیروی میکند:
* قالب: <code>vMAJOR.MINOR.PATCH</code>
* نسخههای عمده (Major) معمولاً با تغییر در مسیر ماژول همراه هستند (مثلاً <code>.../v2</code>).
* گو بهطور پیشفرض آخرین نسخهٔ سازگار را انتخاب میکند (حداقل نسخهٔ مورد نیاز + بالاترین نسخهٔ سازگار).
مثال تغییر نسخهٔ عمده:
<syntaxhighlight lang="go">
require (
example.com/mymodule/v2 v2.3.1
)
</syntaxhighlight>
=== جایگزینی وابستگیها (replace) ===
در زمان توسعهٔ محلی میتوان از دستور <code>replace</code> استفاده کرد:
<syntaxhighlight lang="go">
replace example.com/other => ../other
</syntaxhighlight>
یا با دستور خط فرمان:
<syntaxhighlight lang="bash">
go mod edit -replace=example.com/other=../other
</syntaxhighlight>
این قابلیت برای کار روی چند ماژول مرتبط در یک مخزن یا تست تغییرات محلی بسیار مفید است.
=== فضای کاری (Workspace) با go.work ===
از نسخهٔ ۱٫۱۸ به بعد، فایل <code>go.work</code> امکان کار همزمان روی چند ماژول محلی را فراهم میکند (مناسب برای مونوریپوها). این موضوع خارج از محدودهٔ این صفحه است و در صورت نیاز میتوان صفحهٔ جداگانهای برای آن ایجاد کرد.
=== بهترین شیوهها ===
* همیشه پس از تغییرات کد، <code>go mod tidy</code> را اجرا کنید.
* از نسخههای دقیق در <code>go.mod</code> استفاده کنید و از <code>latest</code> در محیط تولید اجتناب کنید.
* فایلهای <code>go.mod</code> و <code>go.sum</code> را با هم در کنترل نسخه نگهداری کنید.
* وابستگیهای غیرمستقیم را تا حد ممکن با <code>go mod tidy</code> کنترل کنید.
* از <code>go mod verify</code> برای اطمینان از صحت دانلودها استفاده کنید.
* در پروژههای بزرگ، ساختار پوشهها را بر اساس الگوهای رایج (مانند <code>cmd</code>، <code>pkg</code> و <code>internal</code>) سازماندهی کنید.
=== جمعبندی ===
سیستم ماژولهای گو با ترکیب فایلهای <code>go.mod</code> و <code>go.sum</code>، ابزارهای خط فرمان قدرتمند و نسخهبندی معنایی، مدیریت وابستگیها را قابل پیشبینی، امن و تکرارپذیر میکند. این سیستم استاندارد فعلی توسعه در زبان گو محسوب میشود و استفاده از آن برای تمام پروژههای جدید توصیه میگردد.
ppfwlw0f6avkyoadg43824u9m6mf61g
136169
136168
2026-11-06T12:25:41Z
Fwldom
26269
added [[Category:زبان برنامهنویسی گو]] با استفاده از ردهساز
136169
wikitext
text/x-wiki
== مدیریت وابستگیها با استفاده از ماژولها ==
در زبان برنامهنویسی گو، '''ماژول''' (Module) واحد اصلی مدیریت وابستگیها است. یک ماژول مجموعهای از بستههای مرتبط است که با هم نسخهبندی میشوند و توسط فایل <code>go.mod</code> در ریشهٔ درخت منبع تعریف میشود.
از نسخهٔ ۱٫۱۱ گو، سیستم ماژولها معرفی شد و از نسخهٔ ۱٫۱۴ به بعد بهعنوان روش استاندارد و پیشنهادی مدیریت وابستگیها شناخته میشود. این سیستم جایگزین کامل روش قدیمی مبتنی بر <code>GOPATH</code> شده است.
برای آشنایی اولیه با مفهوم بستهها و ساختار پروژه به صفحهٔ [[زبان برنامهنویسی گو/ساختار و نحوه استفاده از بستهها]] مراجعه کنید. آن صفحه تنها معرفی مختصری از ماژولها دارد؛ ادامهٔ مطلب بهطور کامل در اینجا توضیح داده میشود.
=== فایل go.mod ===
فایل <code>go.mod</code> قلب سیستم ماژولها است و شامل دستورات اصلی زیر میشود:
* <code>module</code>: مسیر ماژول (معمولاً همان مسیر مخزن)
* <code>go</code>: حداقل نسخهٔ زبان گو مورد نیاز
* <code>require</code>: وابستگیهای مستقیم و غیرمستقیم همراه با نسخه
* <code>replace</code>: جایگزینی یک ماژول با نسخهٔ محلی یا ماژول دیگر
* <code>exclude</code>: حذف نسخههای خاص یک ماژول
* <code>retract</code>: اعلام نسخههای مشکلدار
نمونهٔ ساده:
<syntaxhighlight lang="go">
module example.com/myproject
go 1.22
require (
github.com/gorilla/mux v1.8.1
golang.org/x/text v0.14.0
)
</syntaxhighlight>
فایل <code>go.sum</code> نیز بهطور خودکار ساخته میشود و شامل هشهای رمزنگاریشدهٔ محتوا برای تضمین یکپارچگی و امنیت وابستگیها است. این دو فایل باید همیشه با هم در کنترل نسخه نگهداری شوند.
=== ایجاد ماژول جدید ===
برای شروع یک پروژهٔ جدید:
<syntaxhighlight lang="bash">
mkdir myproject
cd myproject
go mod init example.com/myproject
</syntaxhighlight>
دستور <code>go mod init</code> فایل <code>go.mod</code> را ایجاد میکند و مسیر ماژول را ثبت مینماید.
=== افزودن و مدیریت وابستگیها ===
برای افزودن یک وابستگی جدید معمولاً از دستور <code>go get</code> استفاده میشود:
<syntaxhighlight lang="bash">
go get github.com/gorilla/mux@v1.8.1
</syntaxhighlight>
یا برای دریافت آخرین نسخهٔ پایدار:
<syntaxhighlight lang="bash">
go get github.com/gorilla/mux@latest
</syntaxhighlight>
دستورهای پرکاربرد دیگر:
* <code>go mod tidy</code>: وابستگیهای استفادهنشده را حذف و وابستگیهای گمشده را اضافه میکند (مهمترین دستور روزمره).
* <code>go mod download</code>: تمام وابستگیها را در کش محلی دانلود میکند.
* <code>go mod vendor</code>: وابستگیها را در پوشهٔ <code>vendor</code> کپی میکند (مناسب برای محیطهایی که دسترسی به اینترنت محدود است).
* <code>go list -m all</code>: فهرست تمام ماژولهای مورد نیاز (مستقیم و غیرمستقیم) را نمایش میدهد.
* <code>go mod graph</code>: گراف وابستگیها را نشان میدهد.
* <code>go mod why <package></code>: دلیل نیاز به یک بسته را توضیح میدهد.
* <code>go mod verify</code>: صحت محتوا و هشهای <code>go.sum</code> را بررسی میکند.
=== نسخهبندی معنایی (Semantic Versioning) ===
گو از نسخهبندی معنایی پیروی میکند:
* قالب: <code>vMAJOR.MINOR.PATCH</code>
* نسخههای عمده (Major) معمولاً با تغییر در مسیر ماژول همراه هستند (مثلاً <code>.../v2</code>).
* گو بهطور پیشفرض آخرین نسخهٔ سازگار را انتخاب میکند (حداقل نسخهٔ مورد نیاز + بالاترین نسخهٔ سازگار).
مثال تغییر نسخهٔ عمده:
<syntaxhighlight lang="go">
require (
example.com/mymodule/v2 v2.3.1
)
</syntaxhighlight>
=== جایگزینی وابستگیها (replace) ===
در زمان توسعهٔ محلی میتوان از دستور <code>replace</code> استفاده کرد:
<syntaxhighlight lang="go">
replace example.com/other => ../other
</syntaxhighlight>
یا با دستور خط فرمان:
<syntaxhighlight lang="bash">
go mod edit -replace=example.com/other=../other
</syntaxhighlight>
این قابلیت برای کار روی چند ماژول مرتبط در یک مخزن یا تست تغییرات محلی بسیار مفید است.
=== فضای کاری (Workspace) با go.work ===
از نسخهٔ ۱٫۱۸ به بعد، فایل <code>go.work</code> امکان کار همزمان روی چند ماژول محلی را فراهم میکند (مناسب برای مونوریپوها). این موضوع خارج از محدودهٔ این صفحه است و در صورت نیاز میتوان صفحهٔ جداگانهای برای آن ایجاد کرد.
=== بهترین شیوهها ===
* همیشه پس از تغییرات کد، <code>go mod tidy</code> را اجرا کنید.
* از نسخههای دقیق در <code>go.mod</code> استفاده کنید و از <code>latest</code> در محیط تولید اجتناب کنید.
* فایلهای <code>go.mod</code> و <code>go.sum</code> را با هم در کنترل نسخه نگهداری کنید.
* وابستگیهای غیرمستقیم را تا حد ممکن با <code>go mod tidy</code> کنترل کنید.
* از <code>go mod verify</code> برای اطمینان از صحت دانلودها استفاده کنید.
* در پروژههای بزرگ، ساختار پوشهها را بر اساس الگوهای رایج (مانند <code>cmd</code>، <code>pkg</code> و <code>internal</code>) سازماندهی کنید.
=== جمعبندی ===
سیستم ماژولهای گو با ترکیب فایلهای <code>go.mod</code> و <code>go.sum</code>، ابزارهای خط فرمان قدرتمند و نسخهبندی معنایی، مدیریت وابستگیها را قابل پیشبینی، امن و تکرارپذیر میکند. این سیستم استاندارد فعلی توسعه در زبان گو محسوب میشود و استفاده از آن برای تمام پروژههای جدید توصیه میگردد.
[[رده:زبان برنامهنویسی گو]]
g8bu505420y5pswhaz2280igl3qb2y4
136171
136169
2026-11-06T12:26:55Z
Fwldom
26269
136171
wikitext
text/x-wiki
{{ناوبری|قبلی=ساختار و نحوه استفاده از بستهها|فعلی=مدیریت وابستگیها با استفاده از ماژولها (Modules)|بعدی=استفاده از بستههای استاندارد گو}}
== مدیریت وابستگیها با استفاده از ماژولها ==
در زبان برنامهنویسی گو، '''ماژول''' (Module) واحد اصلی مدیریت وابستگیها است. یک ماژول مجموعهای از بستههای مرتبط است که با هم نسخهبندی میشوند و توسط فایل <code>go.mod</code> در ریشهٔ درخت منبع تعریف میشود.
از نسخهٔ ۱٫۱۱ گو، سیستم ماژولها معرفی شد و از نسخهٔ ۱٫۱۴ به بعد بهعنوان روش استاندارد و پیشنهادی مدیریت وابستگیها شناخته میشود. این سیستم جایگزین کامل روش قدیمی مبتنی بر <code>GOPATH</code> شده است.
برای آشنایی اولیه با مفهوم بستهها و ساختار پروژه به صفحهٔ [[زبان برنامهنویسی گو/ساختار و نحوه استفاده از بستهها]] مراجعه کنید. آن صفحه تنها معرفی مختصری از ماژولها دارد؛ ادامهٔ مطلب بهطور کامل در اینجا توضیح داده میشود.
=== فایل go.mod ===
فایل <code>go.mod</code> قلب سیستم ماژولها است و شامل دستورات اصلی زیر میشود:
* <code>module</code>: مسیر ماژول (معمولاً همان مسیر مخزن)
* <code>go</code>: حداقل نسخهٔ زبان گو مورد نیاز
* <code>require</code>: وابستگیهای مستقیم و غیرمستقیم همراه با نسخه
* <code>replace</code>: جایگزینی یک ماژول با نسخهٔ محلی یا ماژول دیگر
* <code>exclude</code>: حذف نسخههای خاص یک ماژول
* <code>retract</code>: اعلام نسخههای مشکلدار
نمونهٔ ساده:
<syntaxhighlight lang="go">
module example.com/myproject
go 1.22
require (
github.com/gorilla/mux v1.8.1
golang.org/x/text v0.14.0
)
</syntaxhighlight>
فایل <code>go.sum</code> نیز بهطور خودکار ساخته میشود و شامل هشهای رمزنگاریشدهٔ محتوا برای تضمین یکپارچگی و امنیت وابستگیها است. این دو فایل باید همیشه با هم در کنترل نسخه نگهداری شوند.
=== ایجاد ماژول جدید ===
برای شروع یک پروژهٔ جدید:
<syntaxhighlight lang="bash">
mkdir myproject
cd myproject
go mod init example.com/myproject
</syntaxhighlight>
دستور <code>go mod init</code> فایل <code>go.mod</code> را ایجاد میکند و مسیر ماژول را ثبت مینماید.
=== افزودن و مدیریت وابستگیها ===
برای افزودن یک وابستگی جدید معمولاً از دستور <code>go get</code> استفاده میشود:
<syntaxhighlight lang="bash">
go get github.com/gorilla/mux@v1.8.1
</syntaxhighlight>
یا برای دریافت آخرین نسخهٔ پایدار:
<syntaxhighlight lang="bash">
go get github.com/gorilla/mux@latest
</syntaxhighlight>
دستورهای پرکاربرد دیگر:
* <code>go mod tidy</code>: وابستگیهای استفادهنشده را حذف و وابستگیهای گمشده را اضافه میکند (مهمترین دستور روزمره).
* <code>go mod download</code>: تمام وابستگیها را در کش محلی دانلود میکند.
* <code>go mod vendor</code>: وابستگیها را در پوشهٔ <code>vendor</code> کپی میکند (مناسب برای محیطهایی که دسترسی به اینترنت محدود است).
* <code>go list -m all</code>: فهرست تمام ماژولهای مورد نیاز (مستقیم و غیرمستقیم) را نمایش میدهد.
* <code>go mod graph</code>: گراف وابستگیها را نشان میدهد.
* <code>go mod why <package></code>: دلیل نیاز به یک بسته را توضیح میدهد.
* <code>go mod verify</code>: صحت محتوا و هشهای <code>go.sum</code> را بررسی میکند.
=== نسخهبندی معنایی (Semantic Versioning) ===
گو از نسخهبندی معنایی پیروی میکند:
* قالب: <code>vMAJOR.MINOR.PATCH</code>
* نسخههای عمده (Major) معمولاً با تغییر در مسیر ماژول همراه هستند (مثلاً <code>.../v2</code>).
* گو بهطور پیشفرض آخرین نسخهٔ سازگار را انتخاب میکند (حداقل نسخهٔ مورد نیاز + بالاترین نسخهٔ سازگار).
مثال تغییر نسخهٔ عمده:
<syntaxhighlight lang="go">
require (
example.com/mymodule/v2 v2.3.1
)
</syntaxhighlight>
=== جایگزینی وابستگیها (replace) ===
در زمان توسعهٔ محلی میتوان از دستور <code>replace</code> استفاده کرد:
<syntaxhighlight lang="go">
replace example.com/other => ../other
</syntaxhighlight>
یا با دستور خط فرمان:
<syntaxhighlight lang="bash">
go mod edit -replace=example.com/other=../other
</syntaxhighlight>
این قابلیت برای کار روی چند ماژول مرتبط در یک مخزن یا تست تغییرات محلی بسیار مفید است.
=== فضای کاری (Workspace) با go.work ===
از نسخهٔ ۱٫۱۸ به بعد، فایل <code>go.work</code> امکان کار همزمان روی چند ماژول محلی را فراهم میکند (مناسب برای مونوریپوها). این موضوع خارج از محدودهٔ این صفحه است و در صورت نیاز میتوان صفحهٔ جداگانهای برای آن ایجاد کرد.
=== بهترین شیوهها ===
* همیشه پس از تغییرات کد، <code>go mod tidy</code> را اجرا کنید.
* از نسخههای دقیق در <code>go.mod</code> استفاده کنید و از <code>latest</code> در محیط تولید اجتناب کنید.
* فایلهای <code>go.mod</code> و <code>go.sum</code> را با هم در کنترل نسخه نگهداری کنید.
* وابستگیهای غیرمستقیم را تا حد ممکن با <code>go mod tidy</code> کنترل کنید.
* از <code>go mod verify</code> برای اطمینان از صحت دانلودها استفاده کنید.
* در پروژههای بزرگ، ساختار پوشهها را بر اساس الگوهای رایج (مانند <code>cmd</code>، <code>pkg</code> و <code>internal</code>) سازماندهی کنید.
=== جمعبندی ===
سیستم ماژولهای گو با ترکیب فایلهای <code>go.mod</code> و <code>go.sum</code>، ابزارهای خط فرمان قدرتمند و نسخهبندی معنایی، مدیریت وابستگیها را قابل پیشبینی، امن و تکرارپذیر میکند. این سیستم استاندارد فعلی توسعه در زبان گو محسوب میشود و استفاده از آن برای تمام پروژههای جدید توصیه میگردد.
[[رده:زبان برنامهنویسی گو]]
thc7bwz6rz6y95lkbx8bwuvyceqds4y
آموزش کامل خط فرمان ویندوز /نوشتن فایلهای Batch
0
42297
136175
2026-11-06T12:29:50Z
Fwldom
26269
Fwldom صفحهٔ [[آموزش کامل خط فرمان ویندوز /نوشتن فایلهای Batch]] را به [[آموزش کامل خط فرمان ویندوز/نوشتن فایلهای Batch]] منتقل کرد
136175
wikitext
text/x-wiki
#تغییر_مسیر [[آموزش کامل خط فرمان ویندوز/نوشتن فایلهای Batch]]
l7dou48kam9ac0yn1ioira57tzcw6eg