این فرمتکننده Go چه کاری برای شما انجام میدهد
- از `gofmt` برای اعمال قوانین فرمتبندی رسمی Go استفاده میکند (تبها، فاصلهگذاری، چیدمان) — همانند زنجیره ابزار محلی Go شما
- ویژگیهای مدرن Go از جمله جنریکها، اینترفیسها، لیترالهای مرکب و گوروتینها را مدیریت میکند
- تعاریف ساختار و تگها را خوانا و بهطور یکنواخت مطابق با رفتار gofmt فرمت میکند
- عبارات طولانی، امضاهای تابع و بلوکهای کنترل جریان را برای وضوح و خروجی مناسب diff فرمت میکند
- برای فایلهای تکی، قطعه کدها، مثالها و پاکسازیهای سریع بازبینی کد عالی کار میکند
- یک سبک استاندارد را اعمال میکند تا `git diff` روی تغییرات منطقی تمرکز کند، نه نویز فاصلههای سفید
- خطاهای تجزیه/فرمتبندی را هنگامی که کد Go شما کامپایل نمیشود نشان میدهد، به جای اینکه آن را بهطور خاموش مخدوش کند
🔧 نحوه فرمت کردن کد Go شما به صورت آنلاین for go-formatter
۱. کد Go خود را پیست یا رها کنید
کد Go خود را در ویرایشگر پیست کنید یا یک فایل `.go` را رها کنید. این ابزار فایلهای منبع معمول Go را میپذیرد، از جمله مواردی که از جنریکها، اینترفیسها، گوروتینها و لیترالهای مرکب استفاده میکنند.
۲. کلیک روی «فرمت»
دکمه Format را بزنید تا کد شما به یک بکاند امن که gofmt را اجرا میکند ارسال شود. اگر خطای نحوی وجود داشته باشد، به جای خروجی فرمت شده جزئی، یک پیام خطای واضح مشاهده خواهید کرد.
۳. بررسی و کپی نتیجه
خروجی Go ایدیوماتیک را بررسی کنید، سپس آن را به ویرایشگر خود برگردانید یا فایل تمیز شده را دانلود کنید. نسخه فرمت شده را کامیت کنید تا سبک مخزن شما یکپارچه بماند.
جزئیات فنی
موتور فرمتدهی
این ابزار از فرمتر استاندارد `gofmt` گو روی یک سرویس بکاند برای پردازش کد شما استفاده میکند و همان قوانینی را اعمال میکند که به صورت محلی با زنجیره ابزار Go دریافت میکنید (شامل ویژگیهای مدرن Go مانند جنریکها).
فایلهای پشتیبانی شده
| نوع | الگو | ملاحظات |
|---|---|---|
| فایل منبع Go | *.go | کد معمول Go (پکیجها، تستها، مثالها، جنریکها، گوروتینها) |
| قطعه کدها | متن درون خطی | توابع کوچک، مثالها، قطعات بلاگ و تکههای بازبینی |
قوانین سبک (از gofmt)
| جنبه | رفتار | ملاحظات |
|---|---|---|
| تورفتگی | تبهای سخت برای تورفتگی | فاصلهها برای تورفتگی استفاده نمیشوند؛ این طراحی در Go است |
| واردات | مرتب و گروهبندی شده | gofmt بلوکهای واردات را استاندارد میکند؛ این ابزار مانند goimports واردات را اضافه یا حذف نمیکند |
| فاصلهگذاری | فاصلهگذاری ثابت حول عملگرها و کلمات کلیدی | فاصلهگذاری ناسازگار و ترفندهای تراز دستی را حذف میکند |
| شکستن خط | خطوط طولانی را در صورت نیاز میشکند | به ویژه در فراخوانیهای تابع، لیترالها و عبارات پیچیده |
| ساختارها و تگها | چیدمان فیلدها نرمال شده؛ تگها حفظ میشوند | تگهای بکتیک بدون تغییر باقی میمانند در حالی که کد اطراف قالببندی میشود |
محدودیتها و عملکرد
قالببند برای فایلهای واقعی Go تنظیم شده است. اگر فایل بسیار بزرگ یا پیچیده باشد و تجزیه از زمانبندی داخلی فراتر رود، بکاند ممکن است به جای قفل کردن مرورگر شما، خطای زمانبندی یا خطا برگرداند.
امنیت
فقط متن منبع Go به بکاند قالببند ارسال میشود. کد کامپایل یا اجرا نمیشود. برای پروژههای بسیار حساس یا اختصاصی، امنترین روش همچنان اجرای `gofmt` به صورت محلی در محیط خودتان است.
استفاده از gofmt در خط فرمان
برای توسعه روزمره Go، معمولاً gofmt را مستقیماً اجرا میکنید یا آن را در ویرایشگر و خط لوله CI خود قرار میدهید.
همه پلتفرمها (نوارابزار Go نصب شده)
قالببندی یک فایل در جای خود
gofmt -w main.go`main.go` را با سبک استاندارد Go بازنویسی میکند.
قالببندی همه فایلهای Go در درخت ماژول جاری
gofmt -w .درخت دایرکتوری جاری را پیمایش و همه فایلهای `.go` را در جای خود قالببندی میکند.
ویرایشگر / قلابهای Git
نمونه قطعه کد قلاب پیش از commit در Git
gofmt -w $(git diff --cached --name-only -- '*.go')فایلهای Go مرحلهبندی شده را قبل از commit قالببندی میکند (نمونه سادهشده — برای گردش کار خود تطبیق دهید).
جایگزین: goimports (استفاده نشده توسط این ابزار)
قالببندی و اصلاح importها با goimports
go install golang.org/x/tools/cmd/goimports@latest
$(go env GOPATH)/bin/goimports -w .`goimports` قالببندی به سبک gofmt را با هرس و درج خودکار importها ترکیب میکند. قالببند آنلاین اینجا به خروجی خالص gofmt پایبند است.
زمان استفاده از قالببند آنلاین Go
توسعه روزمره Go
- تمیز کردن قطعه کدها قبل از چسباندن در مستندات، issues یا بازبینی کد
- قالببندی سریع کد Go وقتی از ابزارهای معمول Go دور هستید
- آزمایش generics یا interfaces و دیدن فوری چیدمان idiomatic
// قبل
func add(a int,b int)int{ return a+b }
// بعد (gofmt)
func add(a int, b int) int {
return a + b
}آموزش و مستندسازی
- اطمینان از پیروی دقیق مثالهای Go در وبلاگها، اسلایدها یا آموزشها از سبک idiomatic
- کمک به مبتدیان برای دیدن چگونگی بازساخت کد توسط gofmt برای خوانایی و یکنواختی
بازبینی کد و بهداشت PR
- یکنواخت کردن قالببندی قبل از باز کردن pull request تا بازبینها فقط تغییرات منطقی را ببینند
- کاهش نویز از تنظیمات خاص ویرایشگر با واگذاری به یک قالببند استاندارد (gofmt)
❓ Frequently Asked Questions
این قالببند Go از چه چیزی در زیر استفاده میکند؟
این با goimports چه تفاوتی دارد؟
چرا gofmt بر استفاده از تب برای تورفتگی اصرار دارد؟
کد من قالببندی نمیشود؛ مشکل چیست؟
آیا کد Go من اجرا میشود؟
آیا این برای کدهای اختصاصی ایمن است؟
Pro Tips
gofmt را به هوک ذخیره ویرایشگر خود متصل کنید تا دیگر هرگز به قالببندی فکر نکنید—سپس ابزارهای آنلاین برای قطعهکدهای یکباره و بازبینیها عالی خواهند بود.
قبل از باز کردن درخواست pull، gofmt را اجرا کنید؛ این کار diffها را تمیز نگه میدارد و به بازبینها اجازه میدهد به جای سبک، بر رفتار تمرکز کنند.
از خروجی gofmt به عنوان منبع واحد حقیقت برای سبک کد در تیم خود استفاده کنید؛ از لینترهای سفارشی که با آن مقابله میکنند اجتناب کنید.
هنگام آموزش Go، کد اصلی دانشآموزان را در کنار خروجی gofmt نشان دهید تا الگوهای اصیل و اصلاحات سبک رایج برجسته شوند.
Additional Resources
Other Tools
- زیباکننده CSS
- زیباکننده HTML
- زیباکننده JavaScript
- زیباکننده PHP
- انتخابگر رنگ
- استخراجکننده اسپرایت
- دیکودر Base64
- انکودر Base64
- فرمتدهنده C#
- فرمتدهنده CSV
- Dockerfile Formatter
- فرمتدهنده Elm
- فرمتدهنده ENV
- فرمتدهنده GraphQL
- فرمتدهنده HCL
- فرمتدهنده INI
- فرمتدهنده JSON
- فرمتدهنده LaTeX
- فرمتدهنده Markdown
- فرمتدهنده Objective-C
- Php Formatter
- فرمتدهنده Proto
- فرمتدهنده Python
- فرمتدهنده Ruby
- فرمتدهنده Rust
- فرمتدهنده Scala
- فرمتدهنده اسکریپت شل
- فرمتدهنده SQL
- قالببندی SVG
- قالببندی Swift
- قالببندی TOML
- Typescript Formatter
- قالببندی XML
- قالببندی YAML
- قالببندی Yarn
- کوچککننده CSS
- Html Minifier
- Javascript Minifier
- کوچککننده JSON
- کوچککننده XML
- نمایشگر هدرهای HTTP
- PDF به متن
- تستکننده Regex
- بررسیکننده رتبه SERP
- جستجوی Whois