Daily Archives: 05/09/2016

Go – Nhập xuất (I/O)

Gói io trong Go chỉ chứa một số ít các hàm, còn lại phần lớn là các interface, trong đó có 2 interface chính là ReaderWriter. Reader chứa các hàm hỗ trợ đọc dữ liệu (nhập), Writer chứa các hàm hỗ trợ ghi dữ liệu (xuất). Hầu hết các hàm trong Go nhận tham số là các biến Reader hoặc Writer này.

Ví dụ gói io có hàm Copy() có chức năng sao chép dữ liệu từ một Reader sang một Writer:

func Copy(dst Writer, src Reader) (written int64, err error)

Để đọc hoặc ghi dữ liệu vào một slice []byte hoặc một string thì chúng ta có thể dùng struct Buffer trong gói bytes:

var buf bytes.Buffer
buf.Write([]byte("test"))

Biến Buffer có thể không cần phải khởi tạo trước, Buffer hỗ trợ cả ReaderWriter. Từ biến Buffer chúng ta có thể chuyển thành một slice []byte bằng cách dùng hàm Bytes(). Nếu chúng ta chỉ có nhu cầu đọc dữ liệu từ string thì có một hàm khác tiện hơn là strings.NewReader().