package utils import ( "io" "log/slog" ) func ReadByte(reader io.Reader) (byte, error) { buffer, err := ReadBuffer(reader, 1) if err != nil { return 0, err } return buffer[0], nil } func ReadBuffer(reader io.Reader, size int) ([]byte, error) { buffer := make([]byte, size) _, err := io.ReadFull(reader, buffer) if err != nil { return nil, err } return buffer, nil } func Close[T any](v *T) { if v == nil { return } closer, ok := any(*v).(io.Closer) if ok { err := closer.Close() if err != nil { slog.Warn("对象关闭失败", "err", err) } } }