package input_parser var commandsTab []string var prevInput string var tabIndex int func AutoComplete(input string) string { inputLength := len(input) if inputLength == 0 { return input } if tabIndex+2 > len(commandsTab) { tabIndex = -1 } if prevInput == input { tabIndex = tabIndex + 1 prevInput = commandsTab[tabIndex] return commandsTab[tabIndex] } prevInput = input tabIndex = 0 currentCommands := []string{ "cat", "cd", "cp", "echo", "head", "help", "ls", "man", "mv", "pwd", "rm", "tail", "touch", } var commandsWorking []string for _, currentCommand := range currentCommands { if len(currentCommand) < inputLength { continue } currentCommandWithoutEnd := currentCommand[:inputLength] if currentCommandWithoutEnd != input { continue } commandsWorking = append(commandsWorking, currentCommand) } commandsTab = commandsWorking if len(commandsTab) == 0 { return input } prevInput = commandsTab[0] return commandsTab[0] }