Fondamentalmente ho []int{1, 2, 3}
, voglio un one-liner che lo trasforma nella stringa "1, 2, 3" (ho bisogno del delimitatore per essere personalizzato, a volte .
, a volte ,
, ecc.). Di seguito è il meglio che potrei venire con. Ho cercato online e non sembrava trovare una risposta migliore.One-liner da trasformare [] int nella stringa
Nella maggior parte delle lingue c'è il supporto in-built per questo, ad esempio:
pitone:
> A = [1, 2, 3]
> ", ".join([str(a) for a in A])
'1, 2, 3'
Go:
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, ", "))
}
Sicuramente ci deve essere un programma di utilità sepolto in movimento che mi permette di fare questo con un one-liner?
So che c'è strings.Join(A, ", ")
, ma funziona solo se A è già [] stringa.
Non c'è un "io voglio" in Go. – Volker
Cura di elaborare? – N0thing
"Voglio fare questo {senza un loop, in una riga, non usando una slice, con questo layout di filesystem, qualunque sia}." è in qualche modo "non-Go-ish" come Go è fortemente supponente e l'esatto opposto di "intelligente". Devi elaborare diverse cose: Scrivi un ciclo. Vuoi realizzare qualcosa di difficile: scrivi diverse righe di codice. Si desidera utilizzare lo strumento Vai: attenersi alle convenzioni dell'area di lavoro. – Volker