code: func (*GShadow) lookUp(line string, f field, value interface{}) interface{} {
  	_field := f.(gshadowField)
  	_value := value.(string)
  	allField := strings.Split(line, ":")
  	arrayField := make(map[int][]string)
  
  	arrayField[2] = strings.Split(allField[2], ",")
  	arrayField[3] = strings.Split(allField[3], ",")
  
  	// Check fields
  	var isField bool
  	if GS_NAME&_field != 0 && allField[0] == _value {
  		isField = true
  	} else if GS_PASSWD&_field != 0 && allField[1] == _value {
  		isField = true
  	} else if GS_ADMIN&_field != 0 && checkGroup(arrayField[2], _value) {
  		isField = true
  	} else if GS_MEMBER&_field != 0 && checkGroup(arrayField[3], _value) {
  		isField = true
  	} else if GS_ALL&_field != 0 {
  		isField = true
  	}
  
  	if isField {
  		return &GShadow{
  			allField[0],
  			allField[1],
  			arrayField[2],
  			arrayField[3],
  		}
  	}
  	return nil
  }
docs: // == Lookup
  //
  // lookUp parses the shadowed group line searching a value into the field.
  // Returns nil if it isn't found.