Go中的Println vs Printf vs Print

时间:2018-12-21 04:27:43

标签: go

我来自JS领域,主要使用过console.logconsole.error

现在,我正在关注的教程中,那里的讲师做了类似的事情

package main

import "fmt"



func main() {

    var FirstName = "Varun"
    var lastName = "bindal"

    fmt.Println(FirstName, lastName)
    fmt.Printf("%T", FirstName)
}

在这里,他做了PrintF而不是Println来检查类型。最初,我认为println在新行中打印,所以我更改了

fmt.Printf("%T", FirstName)

fmt.Println("%T", FirstName)

但这会记录%T Varun而不是告诉我类型。

我去了他们的site to figure it out,或者无法理解它,或者找不到它。

谷歌搜索使我知道Go中有三种记录/打印方式

  1. Println
  2. Printf
  3. 打印

那么,如果有人打电话告诉他们三个之间的区别?

4 个答案:

答案 0 :(得分:4)

Printf->“ Print Formatter”此功能允许您将数字,变量和字符串格式化为您提供的第一个字符串参数。

Println->“ Print Line”这不能格式化任何东西,它只接受一个字符串,打印并附加一个换行符'/ n'。

打印->“打印”与Println相同的内容,但是不会附加换行符

答案 1 :(得分:1)

就像Nate所说的那样: var result = '[[{"type":"text","label":"step 1","className":"form-control","name":"text-1545217902718","subtype":"text"}],[{"type":"text","label":"step 2","className":"form-control","name":"text-1545217905331","subtype":"text"}],[{"type":"text","label":"step 3","className":"form-control","name":"text-1545217906652","subtype":"text"}],[{"type":"text","label":"step 4","className":"form-control","name":"text-1545217908197","subtype":"text"}]]'; // result contains multi-tab json data. var res = jQuery.parseJSON(result); var stepLen = res.length; var j; for (var i = 1; i <= stepLen; i++) { j = i+1; var final_tab_id = j var tabId = "step-" + j.toString(); var $newPageTemplate = $(document.getElementById("new-step")); var $newPage = $newPageTemplate.clone().attr("id",tabId).addClass("fb-editor"); var $newTab = $('#add-step-tab').clone().removeAttr("id"); var $tabLink = $("a", $newTab).attr("href", "#" + tabId).text("Step " + j); $newPage.insertBefore($newPageTemplate); $newTab.insertBefore('#add-step-tab'); $fbPages.tabs("refresh"); $fbPages.tabs("option", "active", i); fbInstances.push($newPage.formBuilder(fbOptions)); formBuilder2.actions.setData(res[i-1]) } fmt.Print打印原始字符串(fmt.Println附加换行符)

fmt.Println将不会打印新行,您必须使用fmt.Printf将其添加到最后。

\n的工作方式很简单,您提供了一个包含某些符号的字符串,而其他参数替换了这些符号。例如:

fmt.Printf

在这种情况下,fmt.Printf("%s is cool", "Bob") 代表一个字符串。就您而言,%s打印出变量的类型。

答案 2 :(得分:1)

要回答您的问题,

fmt.Print\n和“”就像fmt.Println

fmt.Printf\n%v就像fmt.Println

如本例所示:

package main

import "fmt"

func main() {
    const name, age = "Kim", 22
    //
    fmt.Print(name, " is ", age, " years old.\n")  // Kim is 22 years old.
    fmt.Printf("%v is %v years old.\n", name, age) // Kim is 22 years old.
    fmt.Println(name, "is", age, "years old.")     // Kim is 22 years old.
    //
    print(name, " is ", age, " years old.\n") // Kim is 22 years old.
    println(name, "is", age, "years old.")    // Kim is 22 years old.
}

printprintln就像fmt.Printfmt.Println一样有限定条件。参见https://stackoverflow.com/a/48420811/12817546https://stackoverflow.com/a/14680544/12817546

Go提供了许多其他格式化I / O的方法。参见https://golang.org/pkg/fmt

答案 3 :(得分:0)

fmt.Println(“ Pi的值:”,math.Pi)

fmt.Printf(“ Pi的值:%g”,math.Pi)

期望//

Pi值:3.141592653589793

Pi值:3.141592653589793