code: func (s *Stat) DiskIOStats() []*DiskIOStats {
  	s.Lock()
  	defer s.Unlock()
  
  	var res []*DiskIOStats
  	do(func() {
  		var stSize C.size_t
  		var cArray *C.sg_disk_io_stats = C.sg_get_disk_io_stats_diff(&stSize)
  		length := int(stSize)
  		slice := (*[1 << 16]C.sg_disk_io_stats)(unsafe.Pointer(cArray))[:length:length]
  
  		for _, v := range slice {
  			f := &DiskIOStats{
  				DiskName:   C.GoString(v.disk_name),
  				ReadBytes:  int(v.read_bytes),
  				WriteBytes: int(v.write_bytes),
  				Period:     time.Duration(int(v.systime)) * time.Second,
  				TimeTaken:  time.Now(),
  			}
  			res = append(res, f)
  		}
  	})
  
  	return res
  
  }
docs: // DiskIOStats get I/Os related stats
  // note that 1st call to 100ms may return NaN as values
  // Go equivalent to sg_disk_io_stats