code: func (j *Job) scheduleNextRun() {
  	if j.lastRun == time.Unix(0, 0) {
  		if j.unit == "weeks" {
  			i := time.Now().Weekday() - j.startDay
  			if i < 0 {
  				i = 7 + i
  			}
  			j.lastRun = time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day()-int(i), 0, 0, 0, 0, loc)
  
  		} else {
  			j.lastRun = time.Now()
  		}
  	}
  
  	if j.period != 0 {
  		// translate all the units to the Seconds
  		j.nextRun = j.lastRun.Add(j.period * time.Second)
  	} else {
  		switch j.unit {
  		case "minutes":
  			j.period = time.Duration(j.interval * 60)
  			break
  		case "hours":
  			j.period = time.Duration(j.interval * 60 * 60)
  			break
  		case "days":
  			j.period = time.Duration(j.interval * 60 * 60 * 24)
  			break
  		case "weeks":
  			j.period = time.Duration(j.interval * 60 * 60 * 24 * 7)
  			break
  		case "seconds":
  			j.period = time.Duration(j.interval)
  		}
  		j.nextRun = j.lastRun.Add(j.period * time.Second)
  	}
  }
docs: //Compute the instant when this job should run next