在每个BookName之后在booksName数组中添加分号,如何将最后一个分号更改为(And)

时间:2019-05-27 11:21:48

标签: go

我需要一个示例,在bookName数组中的每个bookName之后添加(分号),并将最后一个分号更改为(and), 我所拥有的是{“我为你”,“堕落”,“地狱”} 结果,我需要的是(我是为了你,堕落和地狱)

1 个答案:

答案 0 :(得分:1)

对,所以这确实很简单(正如我在评论中所说):

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
)

Demo

工作原理:

  • 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"