43

What is the Go equivalent of PHP's 'implode'?

code_martial
  • 1,185
  • 1
  • 11
  • 23

4 Answers4

70

In the standard library: strings.Join

func Join(a []string, sep string) string

http://golang.org/pkg/strings/#Join

Cheers!

thwd
  • 23,956
  • 8
  • 74
  • 108
  • Thanks a lot! I spent about half an hour searching for this and stackoverflow got me the answer in less than 5 minutes! OTOH, I now feel a bit dumb to not have browsed through the "strings" package documentation. – code_martial Aug 23 '12 at 09:48
13

Join in the strings library. It requires the input array to be strings only (since Go is strongly typed).

Here is an example from the manual:

s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))
Emil Vikström
  • 90,431
  • 16
  • 141
  • 175
7
s := []string{"this", "is", "a", "joined", "string\n"};
strings.Join(s, " ");

Did this help you?

Musa
  • 96,336
  • 17
  • 118
  • 137
4

As i remember, PHP don't have strict typing. Probably not worst idea to use something like this.

package main

import (
    "fmt"
    "strings"
)

func Implode(glue string, args ...interface{}) string {
    data := make([]string, len(args))
    for i, s := range args {
        data[i] = fmt.Sprint(s)
    }
    return strings.Join(data, glue)
}

type S struct {
    z float64
}

func main() {

    v := Implode(", ", 1, "2", "0.2", .1, S{});
    fmt.Println(v)
}