В основном у меня есть []int{1, 2, 3}
, я хочу, чтобы однострочный перевод был преобразован в строку «1, 2, 3» (мне нужно, чтобы разделитель был обычным, иногда .
, иногда ,
и т. Д.). Ниже приводится лучшее, что я мог бы придумать. Поиск в Интернете и, похоже, не нашел лучшего ответа.One-liner to transform [] int в строку
В большинстве языков есть встроенные поддержки для этого, например:
питон:
> A = [1, 2, 3]
> ", ".join([str(a) for a in A])
'1, 2, 3'
идет:
package main
import (
"bytes"
"fmt"
"strconv"
)
// Could not find a one-liner that does this :(.
func arrayToString(A []int, delim string) string {
var buffer bytes.Buffer
for i := 0; i < len(A); i++ {
buffer.WriteString(strconv.Itoa(A[i]))
if i != len(A)-1 {
buffer.WriteString(delim)
}
}
return buffer.String()
}
func main() {
A := []int{1, 2, 3}
fmt.Println(arrayToString(A, ", "))
}
Конечно, должно быть утилита погружена в ход, что позволяет мне делать это с помощью одного лайнера?
Я знаю, что есть strings.Join(A, ", ")
, но это работает только если A уже [] строка.
Там нет «я хочу» в Go. – Volker
Ухаживать за разработкой? – N0thing
"Я хочу сделать это {без цикла, в одной строке, не используя срез, с этим расположением файловой системы, что угодно}". как-то «не-Go-ish», поскольку Go сильно упрямый и полная противоположность «умному». Вы должны обработать несколько вещей: Напишите цикл. Вы хотите выполнить что-то трудное: Напишите несколько строк кода. Вы хотите использовать инструмент go: придерживайтесь условных обозначений рабочей области. – Volker