fmt.Println("a","b")
Voglio stampare le due stringhe senza spazio vuoto, cioè "ab", ma quanto sopra stamperà "a b".go - stampa senza spazio tra gli articoli
Posso solo passare ad usare Printf
?
fmt.Printf("%s%s\n","a","b")
fmt.Println("a","b")
Voglio stampare le due stringhe senza spazio vuoto, cioè "ab", ma quanto sopra stamperà "a b".go - stampa senza spazio tra gli articoli
Posso solo passare ad usare Printf
?
fmt.Printf("%s%s\n","a","b")
Plain vecchia stampa funzionerà se si effettua l'ultimo elemento "\ n".
Sarà anche più facile da leggere se non si è abituati a stampare in stile.
Vedi qui on play
fmt.Println("a","b")
fmt.Print("a","b","\n")
fmt.Printf("%s%s\n","a","b")
stamperà:
a b
ab
ab
Non dimenticare 'fmt.Println (" a "+" b ")' – AndrewN
println si basa su doPrint(args, true, true)
, dove il primo argomento è addspace
e la seconda è addnewline
. Quindi, con più argomenti stamperai sempre lo spazio.
Sembra non ci sia nessuna chiamata di doPrint(args, false, true)
che è quello che vuoi. Printf
può essere una soluzione, Print
ma è necessario aggiungere una nuova riga.
Come si può trovare nella doc:
formati println utilizzando i formati predefiniti per i suoi operandi e scrive sullo standard output. Gli spazi vengono sempre aggiunti tra gli operandi e viene aggiunto un nuovo numero . Restituisce il numero di byte scritti e qualsiasi errore di scrittura riscontrato.
Così si sia bisogno di fare quello che già detto o è possibile concatenare le stringhe prima della stampa:
fmt.Println("a"+"b")
A seconda del caso d'uso è possibile utilizzare strings.Join(myStrings, "")
a tale scopo.
Mi chiedo che la logica era per fare 'comportarsi Print' in modo leggermente diverso da 'Println' come questo. – Maxpm
dovreste punto di riferimento per confrontare le prestazioni, ma preferisce utilizzare il seguente di un Printf
:
fmt.Println(strings.Join([]string{"a", "b"}, ""))
Ricordarsi di import "strings"
, e vedere strings.Join
documentazione per una spiegazione.
la soluzione nel mio progetto
package main
import "fmt"
var formatMap = map[int]string{
0: "",
1: "%v",
}
func Println(v ...interface{}) {
l := len(v)
if s, isOk := formatMap[l]; !isOk {
for i := 0; i < len(v); i++ {
s += "%v"
}
formatMap[l] = s
}
s := formatMap[l] + "\n"
fmt.Printf(s, v...)
}
func main() {
Println()
Println("a", "b")
Println("a", "b")
Println("a", "b", "c", 1)
}
'' 'fmt.Println ("ab")' '' –