Ich möchte die zwei Zeichenfolgen ohne Leerzeichen Polsterung, nämlich "AB", aber das obige wird "a b" drucken.gehen - drucken ohne Leerzeichen zwischen den Elementen
schalte ich nur Printf
zu verwenden?
fmt.Printf("%s%s\n","a","b")
Ich möchte die zwei Zeichenfolgen ohne Leerzeichen Polsterung, nämlich "AB", aber das obige wird "a b" drucken.gehen - drucken ohne Leerzeichen zwischen den Elementen
schalte ich nur Printf
zu verwenden?
fmt.Printf("%s%s\n","a","b")
Plain alter Druck wird funktionieren, wenn Sie das letzte Element "\ n" zu machen.
Es ist auch einfacher zu lesen, wenn Sie nicht zum Formatieren von Druckvorlagen verwendet werden.
Siehe hier on play
fmt.Println("a","b")
fmt.Print("a","b","\n")
fmt.Printf("%s%s\n","a","b")
druckt:
a b
ab
ab
Nicht vergessen 'fmt.Println (" a "+" b ")' – AndrewN
Println beruht auf doPrint(args, true, true)
, wo erste Argument addspace
ist und die zweite ist addnewline
. Also druckt Printin mit mehreren Argumenten immer Leerzeichen.
Es scheint, es gibt keinen Anruf von doPrint(args, false, true)
, was Sie wollen. Printf
kann eine Lösung sein, Print
auch, aber Sie sollten einen Zeilenumbruch hinzufügen.
Wie es in der doc gefunden werden kann:
Println Formate die Standardformate für seine Operanden verwendet und schreibt auf die Standardausgabe. Leerzeichen werden immer zwischen den Operanden eingefügt und ein Zeilenumbruch wird angehängt. Er gibt die Anzahl der geschriebenen Bytes und einen beliebigen Schreibfehler zurück.
So müssen Sie entweder tun, was Sie schon gesagt, oder Sie können die Saiten vor dem Druck verketten:
fmt.Println("a"+"b")
Je nach usecase Sie strings.Join(myStrings, "")
zu diesem Zweck verwenden können.
Ich frage mich, was die Gründe für die Herstellung war 'Print' verhalten subtil anders als 'Println'. – Maxpm
Sie würden zu Benchmark haben die Leistung zu vergleichen, aber ich möchte lieber das folgende als ein Printf
verwenden:
fmt.Println(strings.Join([]string{"a", "b"}, ""))
zu import "strings"
Denken Sie daran, und strings.Join
Dokumentation für eine Erklärung sehen.
die Lösung in meinem Projekt
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")' '' –