Bạn sử dụng toán tử sai và thứ tự đối số. Trước tiên bạn phải viết các nhà điều hành và sau đó là toán hạng:
{{if eq (index $n 0) (index $n 1)}}
Đây là dễ đọc hơn và tiện dụng như eq
có thể mất nhiều hơn là chỉ 2 đối số, vì vậy bạn có thể viết ví dụ:
{{if eq (index $n 0) (index $n 1) (index $n 2)}}
Để kiểm tra bình đẳng đa chiều đơn giản hơn, eq (chỉ) chấp nhận hai hoặc nhiều đối số và so sánh số thứ hai và sau đó đối số đầu tiên, trả về hiệu lực
arg1==arg2 || arg1==arg3 || arg1==arg4 ...
(Không giống với || tại Gò Tuy nhiên, eq là một cuộc gọi chức năng và tất cả các đối số sẽ được đánh giá)
Với sự thay đổi này đầu ra (thử nó trên Go Playground):.
1 != 2
2 = 2
4 != 2
Lưu ý:
Bạn không bắt buộc phải giới thiệu biến "vòng lặp", hành động {{range}}
thay đổi dấu chấm thành mục hiện tại:
... chấm được thiết lập với các yếu tố liên tiếp của mảng, miếng, hoặc bản đồ ...
Vì vậy, bạn có thể đơn giản hóa mẫu của bạn, đây là tương đương như của bạn:
{{range .}}
{{index . 0}} {{if eq (index . 0) (index . 1)}}={{else}}!={{end}} {{index . 1}}
{{end}}
Cũng lưu ý rằng bạn có thể tự tạo biến trong mẫu, được khuyến nghị nếu bạn sử dụng cùng một biểu thức nhiều lần không cần thiết (chẳng hạn như index . 0
).Đây cũng là tương đương với mẫu của bạn:
{{range .}}{{$0 := index . 0}}{{$1 := index . 1}}
{{$0}} {{if eq $0 $1}}={{else}}!={{end}} {{$1}}
{{end}}
Cũng lưu ý rằng trong trường hợp cụ thể này kể từ khi những điều bạn muốn đầu ra trong if
và else
chi nhánh cả chứa dấu =
, bạn không cần phải 2 chi nhánh, =
cần được xuất ra trong cả hai trường hợp, bạn chỉ cần thêm một dấu hiệu !
nếu chúng không bằng nhau. Vì vậy, mẫu cuối cùng sau cũng tương đương với mẫu của bạn:
{{range .}}{{$0 := index . 0}}{{$1 := index . 1}}
{{$0}} {{if ne $0 $1}}!{{end}}= {{$1}}
{{end}}