2013-08-20 27 views

Trả lời

14

os.Create trả về lỗi làm giá trị trả lại thứ hai. Bản thân lỗi là interfacetype error interface { Error() string }. Bất kỳ loại dữ liệu nào xảy ra có phương thức Error sẽ triển khai giao diện đó và có thể được chỉ định.

Trong hầu hết các trường hợp, chỉ cần in lỗi là đủ, nhưng trong ví dụ này, bạn muốn xử lý ENOSPC (không có khoảng trống trên thiết bị) một cách rõ ràng. Gói os trả lại *os.PathError khi triển khai lỗi trong trường hợp đó và nếu bạn muốn truy cập thêm thông tin về lỗi, tức là mọi thứ bên cạnh phương thức Error() string, bạn sẽ phải chuyển đổi nó.

Tuyên bố e, ok := err.(*os.PathError)type assertion. Nó sẽ kiểm tra nếu giá trị giao diện err chứa một loại bê tông *os.PathError và sẽ trả về giá trị đó. Nếu loại khác được lưu trữ trong giao diện (có thể có các loại khác thực hiện giao diện error) thì nó sẽ chỉ trả lại zero value và sai, tức là nil, false trong trường hợp đó.

7

Từ docs, đó là một loại khẳng định:

Đối với một biểu thức x kiểu giao diện và một loại T, khái niệm chính

x.(T) 

khẳng định rằng x là không nil và giá trị được lưu trữ trong x là kiểu T. Ký hiệu x. (T) được gọi là xác nhận kiểu.

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