code: func (e *Adaptor) DigitalPin(pin string, dir string) (sysfsPin sysfs.DigitalPinner, err error) {
  	e.mutex.Lock()
  	defer e.mutex.Unlock()
  
  	i := sysfsPinMap[pin]
  	if e.digitalPins[i.pin] == nil {
  		e.digitalPins[i.pin] = sysfs.NewDigitalPin(i.pin)
  		if err = e.digitalPins[i.pin].Export(); err != nil {
  			return
  		}
  	}
  
  	if dir == "in" {
  		if err = e.digitalPins[i.pin].Direction(sysfs.IN); err != nil {
  			return
  		}
  	} else if dir == "out" {
  		if err = e.digitalPins[i.pin].Direction(sysfs.OUT); err != nil {
  			return
  		}
  	}
  	return e.digitalPins[i.pin], nil
  }
docs: // digitalPin returns matched digitalPin for specified values