2012-05-02 37 views

Trả lời

9

Đó là xác nhận loại. Tôi không thể giải thích rõ hơn là the spec.

+0

Cảm ơn. Trong ý nghĩa đó là nó tương tự như một diễn viên? – OscarRyz

+2

Vâng, chỉ "tương tự". Quá trình truyền được gọi là [conversion] (http://golang.org/ref/spec#Conversions) trong Go. Có thể nói rằng chuyển đổi xảy ra vào thời gian biên dịch và xác nhận khi chạy. – Mostafa

0

Đó là xác nhận loại. Câu hỏi if đang kiểm tra nếu err cũng là *exec.ExitError. Các ok cho bạn biết cho dù đó là hay không. Cuối cùng, exiterrerr, nhưng "đã chuyển đổi" thành *exec.ExitError. Điều này chỉ hoạt động với các loại interface.

Bạn cũng có thể bỏ qua ok nếu bạn chắc chắn 100000 phần trăm loại cơ bản. Tuy nhiên, nếu bạn bỏ qua ok và hóa ra bạn đã sai, thì bạn sẽ nhận được panic.

// find out at runtime if this is true by checking second value 
exitErr, isExitError := err.(*exec.ExitError) 

// will panic if err is not *exec.ExitError 
exitErr := err.(*exec.ExitError) 

ok không phải là một phần của cú pháp, bằng cách này. Nó chỉ là một boolean và bạn có thể đặt tên nó bất cứ điều gì bạn muốn.

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