code: func (s *Stat) CPUStats() *CPUStats {
  	s.Lock()
  	defer s.Unlock()
  
  	var cpu *CPUStats
  	do(func() {
  
  		cpup := C.sg_get_cpu_percents_of(C.sg_new_diff_cpu_percent, nil)
  
  		loadStat := C.sg_get_load_stats(nil)
  
  		cpu = &CPUStats{
  			User:      float64(cpup.user),
  			Kernel:    float64(cpup.kernel),
  			Idle:      float64(cpup.idle),
  			IOWait:    float64(cpup.iowait),
  			Swap:      float64(cpup.swap),
  			Nice:      float64(cpup.nice),
  			LoadMin1:  float64(loadStat.min1),
  			LoadMin5:  float64(loadStat.min5),
  			LoadMin15: float64(loadStat.min15),
  			Period:    time.Duration(int(cpup.time_taken)) * time.Second,
  			TimeTaken: time.Now(),
  		}
  	})
  	return cpu
  }
docs: // CPUStats get cpu related stats
  // note that 1st call to 100ms may return NaN as values
  // Go equivalent to sg_cpu_percents