Công cụ này làm gì
Trình định dạng Go viết lại mã nguồn Go theo đúng một phong cách chuẩn mà cả cộng đồng Go sử dụng. Dán một tệp hoặc một đoạn code và nó trả về với cách thụt lề, khoảng trắng, nhóm import và các trường struct cùng chú thích được căn thẳng hàng theo gofmt.
Nó chạy gofmt thật từ bộ công cụ Go, được biên dịch sang WebAssembly. Không có gì là mô phỏng gần đúng: những gì bạn thấy ở đây chính xác là những gì go fmt sẽ ghi ra, nên code đã định dạng có thể commit mà không gây ra diff trong CI.
Cách sử dụng
- Dán code Go, hoặc mở một tệp
.go. - Code đã định dạng xuất hiện bên phải ngay khi bạn gõ.
- Giữ thụt lề Tab cho code bạn sẽ commit. Chọn 2 dấu cách hoặc 4 dấu cách khi code được đưa vào tài liệu, slide hoặc một trang web hiển thị tab quá rộng.
- Sao chép hoặc tải kết quả xuống.
Nếu code không phân tích được, công cụ hiển thị lỗi đầu tiên kèm dòng và cột, ví dụ expected ')', found '{', và bạn có thể nhảy thẳng tới dòng đó.
Ví dụ
Ví dụ mẫu là một chương trình ngắn bị nén vào ít dòng nhất có thể: các import phân tách bằng dấu chấm phẩy, một struct viết trên hai dòng, và các hàm không có dấu cách quanh toán tử. Sau khi định dạng:
- các import trở thành một khối trong ngoặc đơn với mỗi package một dòng;
- các trường struct được đặt trên dòng riêng và kiểu của chúng được căn thành một cột;
if u.Age<18{trở thànhif u.Age < 18 {với phần thân trên dòng riêng;- composite literal được thêm dấu cách sau dấu phẩy và dấu hai chấm.
gofmt thay đổi gì và không thay đổi gì
gofmt chỉ thay đổi bố cục. Nó không bao giờ đổi tên định danh, sắp xếp lại khai báo hay xóa import không dùng; những việc đó thuộc về các công cụ như goimports và go vet. Nó cũng giữ các chỗ xuống dòng có ý nghĩa của bạn, nên một danh sách tham số dài mà bạn đã tách thành nhiều dòng vẫn được giữ nguyên.
Chú thích được giữ lại và thụt lề lại cùng với code xung quanh. Chú thích cuối dòng trên các dòng liên tiếp được căn thành một cột, giống như các trường struct.
Mẹo
- Định dạng là cách nhanh để tìm dấu ngoặc nhọn bị thiếu: vị trí lỗi thường chỉ vào dòng đầu tiên sau chỗ sai.
- Hãy chạy trình định dạng trước khi chia sẻ code trong issue hoặc khi review. Người review khi đó có thể tập trung vào việc code làm gì thay vì trông nó thế nào.
- Trong trình soạn thảo, bật “format on save” với gopls để tệp của bạn luôn khớp với đầu ra này.
Câu hỏi thường gặp
› Đây có phải là gofmt thật không?
Đúng vậy. Trình định dạng chính là mã gofmt từ bộ công cụ Go được biên dịch sang WebAssembly, nên đầu ra giống từng byte với những gì `gofmt` hoặc `go fmt` in ra trên máy của bạn.
› Tôi có cần khai báo package không?
Không. Một tệp đầy đủ là tốt nhất, nhưng gofmt cũng chấp nhận một danh sách khai báo hoặc vài câu lệnh, rất tiện cho các đoạn code sao chép từ bài blog hay đoạn chat.
› Vì sao dùng tab để thụt lề?
gofmt luôn thụt lề bằng tab và căn chỉnh bằng dấu cách. Đó là quy ước của Go, và trình soạn thảo hiển thị tab với độ rộng tùy bạn chọn. Nếu cần dấu cách cho tài liệu hay slide, hãy chọn 2 hoặc 4 dấu cách và chỉ các tab ở đầu dòng được thay thế.
› Code của tôi có bị tải lên không?
Không. Module WebAssembly được tải về một lần và việc định dạng chạy cục bộ trong trình duyệt của bạn.