2014-09-19 15 views

Antwort

10

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 
+3

Nicht vergessen 'fmt.Println (" a "+" b ")' – AndrewN

1

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.

2

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.

+0

Ich frage mich, was die Gründe für die Herstellung war 'Print' verhalten subtil anders als 'Println'. – Maxpm

0

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.

0

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) 
} 
Verwandte Themen