将任何类型的切片写入Go中的文件

For logging purposes I want to be able to quickly write a slice of any type, whether it be ints, strings, or custom structs, to a file in Go. For instance, in C#, I can do the following in 1 line:

File.WriteAllLines(filePath, myCustomTypeList.Select(x => x.ToString());

How would I go about doing this in Go? The structs implement the Stringer interface.

Edit: I in particular would like the output to be printed to a file and one line per item in the slice

Use the fmt package format values as strings and print to a file:

func printLines(filePath string, values []interface{}) error {
    f, err := os.Create(filePath)
    if err != nil {
        return err
    }
    defer f.Close()
    for _, value := range values {
       fmt.Fprintln(f, value)  // print values to f, one per line
    }
    return nil
}

fmt.Fprintln will call Stringer() on your struct type. It will also print int values and string values.

playground example

Use the reflect package to write any slice type:

func printLines(filePath string, values interface{}) error {
  f, err := os.Create(filePath)
  if err != nil {
    return err
  }
  defer f.Close()
  rv := reflect.ValueOf(values)
  if rv.Kind() != reflect.Slice {
    return errors.New("Not a slice")
  }
  for i := 0; i < rv.Len(); i++ {
    fmt.Fprintln(f, rv.Index(i).Interface())
  }
  return nil
}

If you have variable values of type myCustomList, then you can call it like this: err := printLines(filePath, values)

playground example