package main import ( "fmt" "strings" ) // Join 函数接受一个分隔符 sep 和一个可变长度的字符串元素 elems, // 并将 elems 中的元素用 sep 分隔符连接起来,返回连接后的字符串。 func Join(sep string, elems ...string) string { // 处理特殊情况。 switch len(elems) { case 0: // 如果 elems 为空,返回空字符串。 return "" case 1: // 如果 elems 只有一个元素,返回该元素。 return elems[0] } // 计算连接后的字符串长度。 n := len(sep) * (len(elems) - 1) for i := 0; i < len(elems); i++ { n += len(elems[i]) } // 使用 strings.Builder 来高效地构建连接后的字符串。 var b strings.Builder b.Grow(n) b.WriteString(elems[0]) for _, s := range elems[1:] { b.WriteString(sep) b.WriteString(s) } // 返回连接后的字符串。 return b.String() } func main() { // 不太懂这个题的意思 // 是将 elems 切片参数改为可变参数吗? str := []string{"a", "b", "c", "d", "e", "f"} // str... 为解切片操作。 fmt.Println(Join("-", str...)) fmt.Println(Join(",", "abc", "def", "ghi")) }