code: func GetIfChanged() (*File, error) {
  	lastModified.Lock()
  	defer lastModified.Unlock()
  
  	resolv, err := ioutil.ReadFile("/etc/resolv.conf")
  	if err != nil {
  		return nil, err
  	}
  	newHash, err := ioutils.HashData(bytes.NewReader(resolv))
  	if err != nil {
  		return nil, err
  	}
  	if lastModified.sha256 != newHash {
  		lastModified.sha256 = newHash
  		lastModified.contents = resolv
  		return &File{Content: resolv, Hash: newHash}, nil
  	}
  	// nothing changed, so return no data
  	return nil, nil
  }
docs: // GetIfChanged retrieves the host /etc/resolv.conf file, checks against the last hash
  // and, if modified since last check, returns the bytes and new hash.
  // This feature is used by the resolv.conf updater for containers