Trước hết, bất cứ khi nào bạn có câu hỏi "nó được sử dụng như thế nào trong thực tế", cách tốt để bắt đầu là tìm kiếm mã nguồn Go (hoặc bất kỳ cơ sở mã Go đủ lớn nào) và tài liệu gói để có câu trả lời.
Bây giờ, os.Exit
và panic
hoàn toàn khác. panic
được sử dụng khi chương trình, hoặc một phần của nó, đã đạt đến trạng thái không thể khôi phục.
Khi panic
được gọi, bao gồm ngầm định các lỗi thời gian chạy, chẳng hạn như lập chỉ mục một lát ngoài giới hạn hoặc không xác nhận kiểu, nó sẽ ngay lập tức dừng thực thi chức năng hiện tại và bắt đầu giải nén ngăn xếp của quy trình, chạy mọi chức năng bị trì hoãn trong quá trình thực hiện. Nếu quá trình gỡ bỏ đó đạt đến đầu ngăn xếp của quy trình, chương trình sẽ chết.
os.Exit
được sử dụng khi bạn cần hủy bỏ chương trình ngay lập tức, không có khả năng khôi phục hoặc chạy câu lệnh dọn dẹp hoãn lại và cũng trả về mã lỗi (mà các chương trình khác có thể sử dụng để báo cáo những gì đã xảy ra). Điều này rất hữu ích trong các bài kiểm tra, khi bạn đã biết rằng sau một lần kiểm tra này không thành công, bài kiểm tra kia cũng sẽ thất bại, vì vậy bạn cũng có thể thoát ngay bây giờ. Điều này cũng có thể được sử dụng khi chương trình của bạn đã hoàn thành mọi thứ cần thiết và bây giờ chỉ cần thoát ra, tức là sau khi in thông báo trợ giúp.
Hầu hết thời gian bạn sẽ không sử dụng panic
( error
thay vào đó bạn nên trả lại ) và bạn hầu như không bao giờ cần os.Exit
ngoài một số trường hợp trong các thử nghiệm và để kết thúc chương trình nhanh chóng.
panic
này được sử dụng để thoát khi bị lỗi, hoàn toàn là do nó dễ hiểu và loại bỏ việc nhập bất kỳ gói nào khác. Điều này không có nghĩa là nó tốt, hoặc thực hành thành ngữ! . Nó chỉ là một thiết bị tiết kiệm không gian cho mã ví dụ. IRL dự phòngpanic
cho những tình huống rất đặc biệt.