code: func (l *Line) Scan(value interface{}) error {
  	data, ok := value.([]byte)
  	if !ok {
  		return ErrUnsupportedDataType
  	}
  
  	if len(data) == 41 {
  		// the length of a 2 point linestring type in WKB
  		return l.unmarshalWKB(data)
  	}
  
  	if len(data) == 45 {
  		// Most likely MySQL's SRID+WKB format.
  		// However, could be some encoding of another type.
  		// But those would be invalid for parsing a line.
  		return l.unmarshalWKB(data[4:])
  	}
  
  	if len(data) == 0 {
  		return nil
  	}
  
  	return ErrIncorrectGeometry
  }
docs: // Scan implements the sql.Scanner interface allowing
  // line structs to be passed into rows.Scan(...interface{})
  // The column must be of type LineString and contain 2 points,
  // or an error will be returned. Data must be fetched in WKB format.
  // Will attempt to parse MySQL's SRID+WKB format if the data is of the right size.
  // If the column is empty (not null) an empty line [(0, 0), (0, 0)] will be returned.