code: func (c *CheckTCP) Start() {
  	c.stopLock.Lock()
  	defer c.stopLock.Unlock()
  
  	if c.dialer == nil {
  		// Create the socket dialer
  		c.dialer = &net.Dialer{DualStack: true}
  
  		// For long (>10s) interval checks the socket timeout is 10s, otherwise
  		// the timeout is the interval. This means that a check *should* return
  		// before the next check begins.
  		if c.Timeout > 0 && c.Timeout < c.Interval {
  			c.dialer.Timeout = c.Timeout
  		} else if c.Interval < 10*time.Second {
  			c.dialer.Timeout = c.Interval
  		}
  	}
  
  	c.stop = false
  	c.stopCh = make(chan struct{})
  	go c.run()
  }
docs: // Start is used to start a TCP check.
  // The check runs until stop is called