Phiên bản Go nào bạn đang sử dụng (phiên bản đi)? https://play.golang.orgTại sao "const true = false" được cho phép?
Bạn đã làm gì?
Chạy một chương trình nhỏ:
package main
import "fmt"
const true = false
func main() {
if (true == false) {
fmt.Println("True equals to false")
}
fmt.Println("Hello World")
}
https://play.golang.org/p/KwePsmQ_q9
- đã bạn mong đợi gì để xem?
Thông báo lỗi hoặc cảnh báo tôi đang tạo hằng số với tên đã được xác định và có khả năng phá vỡ toàn bộ ứng dụng.
- Thay vào đó bạn thấy gì?
Chạy mà không gặp sự cố. Không có cảnh báo hoặc bất cứ điều gì để ngăn chặn việc tạo hằng số mới với tên đã được xác định.
Điều thú vị. "Var true = false" cho kết quả tương tự. Nhưng khi tôi cố gắng khai báo một gói hoặc nhập khẩu, tôi nhận được lỗi này: "prog.go: 6: lỗi cú pháp: gói không mong muốn, tên dự kiến prog.go: 6: không thể khai báo tên" – Vityata
Sao chép có thể có của [Tại sao 'mới 'và' làm 'không dành riêng cho từ khoá?] (http://stackoverflow.com/questions/31987772/why-are-new-and-make-not-reserved-keywords) Nó hỏi về 'new' và' make', nhưng 'true' cũng là một [số nhận dạng được khai báo trước] (https://golang.org/ref/spec#Predeclared_identifiers) cũng làm cho câu trả lời áp dụng ở đây. – icza
Không đúng hay sai là từ khóa (https://golang.org/ref/spec#Keywords) nhưng số nhận dạng được khai báo trước (https://golang.org/ref/spec#Predeclared_identifiers) và bạn xác định lại chúng là tốt và hoạt động như toàn bộ ngôn ngữ. – Volker