Добавление точки с запятой в массив booksName после каждого BookName, Как изменить последнюю точку с запятой на (А) - PullRequest
0 голосов
/ 27 мая 2019

Мне нужно и пример для добавления (точка с запятой) после каждого bookName в массиве bookName, и изменить последнюю точку с запятой на (и), что у меня есть {"me befor you", "fallen", "inferno"} whatМне нужно в результате (я до тебя, падший и пекло)

1 Ответ

1 голос
/ 28 мая 2019

Правильно, так что это действительно довольно простая вещь (как я сказал в комментариях):

books := []string{"title 1", "title 2", "title 3"}
list := fmt.Sprintf(
    "%s and %s",
    strings.Join(books[:len(books)-1], ", "), // join all elements with , excluding last one|
    books[len(books)-1], // last element in slice
)

Демо

Как это работает:

  • strings.Join является частью стандартного пакета strings, который выполняет то, что делает ваша доморощенная функция impode. Не нужно писать самому
  • books[:len(books)-1] «создает» новый срез, содержащий все элементы исходного среза, кроме последнего. Объединение этих элементов с запятыми - это то, что вы хотите. Вам просто нужен бит and между этим и последним элементом в срезе.
  • books[len(books)-1] получает последний элемент в срезе
  • fmt.Sprintf("%s and %s": создается строка, в которой первая часть представляет собой разделенный запятыми список, созданный strings.Join, а вторая часть - последний элемент в срезе.

Вместе это дает "title 1, title 2 and title 3"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...