2014-04-04 18 views
5

Nếu bạn có mã như: func MyFunc(a int, b int)có thể quy tắc viết lại gofmt loại bỏ các loại đối số dư thừa không?

một quy tắc gofmt viết lại có thể thay đổi nó thành: func MyFunc(a, b int)

tôi đã cố gắng: gofmt -r "f(x t, y t) -> f(x, y t)" myfile.go

Nhưng tôi nhận được: parsing pattern f(x t, y t) at 1:5: expected ')', found 'IDENT' t

Tôi cũng đã cố gắng: gofmt -r "f(x int, y int) -> f(x, y int)" myfile.go

Nhưng nó cho một lỗi tương tự cho int thay vì t

Tôi đã đọc số gofmt documentation. Tìm kiếm trên web không bật lên bất kỳ điều gì hữu ích.

Tôi đang cố ý sử dụng số nhận dạng ký tự đơn để khớp với các biểu thức.

tôi nghi ngờ vấn đề có thể nằm trong cố gắng để phù hợp với loại vì nó có thể không được coi là một "khái niệm"

Có thể làm điều này với gofmt?

+0

Đây có thể là một yêu cầu tốt để thêm vào '-s 'tùy chọn mặc dù. – JimB

Trả lời

3

Không, nó không thể - bởi vì đi pmt điều trị patter là "biểu hiện", nhìn vào các http://golang.org/src/cmd/gofmt/rewrite.go parseExpr() chức năng.

Đặc điểm kỹ thuật đi (http://golang.org/ref/spec#Expressions) nói rõ ràng "Biểu thức chỉ định tính toán giá trị bằng cách áp dụng toán tử và hàm cho toán hạng". vì vậy hãy thử fmt cố gắng phân tích mẫu của bạn "f (x t, y t)" làm hàm gọi, vì vậy thay vì "t", nó sẽ là dấu phẩy hoặc dấu ngoặc đơn.

bạn không thể viết mẫu mà sẽ nhiều "func MyFunc (một int, int b)" - bởi vì định nghĩa chức năng của nó, không phải là một biểu hiện đi hợp lệ

Các vấn đề liên quan