Go Println和Printf的区别详解

Println 和Printf 都是fmt包中公共方法;在需要打印信息时常用的函数,那么二函数有什么区别呢?

附上代码

package main
import (
 "time"
 "fmt"
)
const (
 Man = 1
 Female = 2
)
func main(){
 timer := time.Now().Unix()
 if(timer % Female == 0){
  fmt.Println("%d is Female", timer)
  fmt.Printf("%d is Female", timer)
 }else{
  fmt.Println("%d is Man", timer)
  fmt.Printf("%d is Man", timer)
 }
}

运行结果:

%d is Man 1529049077 // println输出结果

1529049077 is Man // printf输出结果

结果可知

Printf : 可打印出格式化的字符串,Println不行;

总结:

println会根据你输入格式原样输出,printf需要格式化输出并带输出格式;

补充:Go基础-Go中的Println和Print和Printf之间的区别

1、Println

在Println中进行输出时:

package main
import (
 f "fmt"
)
func main(){
 f.Println("hello","world","hello","world")
 f.Println("hello","world","hello","world")
}

输出:

/private/var/folders/yt/24f_qg2n6879g2fg85994jf40000gn/T/___go_build_helloworld_go #gosetup

hello world hello world

hello world hello world

Process finished with exit code 0

在同一输出函数中输出多项的时候,hello和world中是存在空格的

在不同输出函数之间会换行

2、Print

在Print中进行输出时:

package main
import f "fmt"
func main(){
 f.Print("hello","world","hello","world")
 f.Print("hello","world","hello","world")
}

输出:

/private/var/folders/yt/24f_qg2n6879g2fg85994jf40000gn/T/___go_build_helloworld_go #gosetup

helloworldhelloworldhelloworldhelloworld

Process finished with exit code 0

在同一个输出函数中处处多项的时候,hello和world中不存在空格

在不同输出函数之间,不换行

3、Printf

在Printf进行输出时:

package main
import f "fmt"
func main(){
 a := 10
 b := 20
 c := "hello"
 f.Printf("a=%d,b=%d",a,b)
 f.Printf("c=%s",c)
}

输出:

/private/var/folders/yt/24f_qg2n6879g2fg85994jf40000gn/T/___go_build_helloworld_go #gosetup

a=10,b=20c=hello

Process finished with exit code 0

可以对参数进行格式化输出,在不同输出函数中是不换行的。

总结:


函数


同函数输出多项


不同函数输出


Println


之间存在空格


换行


Print


不存在空格


不换行


Printf


格式化输出


不换行

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • golang 跳出for循环操作

    执行以下代码,发现无法跳出for循环: func SelectTest() { i := 0 for { select { case <-time.After(time.Second * time.Duration(2)): i++ if i == 5 { fmt.Println("跳出for循环") } } fmt.Println("for循环内 i=", i) } fmt.Println("for循环外") } 解决办法有两个: 1.使

  • golang fmt占位符的使用详解

    golang fmt格式"占位符" golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式. Printf("%v", people) {zhangsan}, %+v 打印结构体时,会添加字

  • 浅谈go build后加文件和目录的区别

    如下: go build + xxx.go:生成以xxx命名的可执行文件 go build + dir / go build . / go build:生成以目录名命名的可执行文件 补充:golang学习------golang的目录管理以及go install,go build的使用 一个优秀的项目离不开良好的代码管理,golang通过package提供一些代码的管理封装,那么我们应该如何来设计我们的代码结构呢? 我们假设我们需要完成一个项目,项目的功能如下: 在基于package的目录思路下

  • golang 占位符和fmt常见输出介绍

    1.常用的占位符 %d 整型占位符 %f 浮点型占位符 %t 布尔型占位符 %s 字符串类型占位符 %q 带引号字符串类型占位符 %p 指针型占位符 %v 通用占位符 %b 二进制 %x 十进制 2.fmt 输出 fmt.Print 输出到控制台,不接受任何格式操作 fmt.Println 输出到控制台并换行 fmt.Printf 只可以打印出格式化的字符串 fmt.Sprintf 格式化并返回一个字符串而不带任何输出 fmt.Fpirntf 格式化并输出到io.writers 而不是os.St

  • 解决golang http重定向失效的问题

    最近在学习GoLang,在使用http重定向的时候发现了一个很有趣的现象,在这里记录一下. r.GET("/index", func(c *gin.Context) { c.Redirect(http.StatusMovedPermanently, "http://www.baidu.com/") }) 本来写了这么一段代码,将我的路由重定向到"百度",第一次试验成功了.之后当我想重新定向到其它网站,或者不重定向而试验其它逻辑的时候,发现在浏览器

  • Go Println和Printf的区别详解

    Println 和Printf 都是fmt包中公共方法:在需要打印信息时常用的函数,那么二函数有什么区别呢? 附上代码 package main import ( "time" "fmt" ) const ( Man = 1 Female = 2 ) func main(){ timer := time.Now().Unix() if(timer % Female == 0){ fmt.Println("%d is Female", timer)

  • Servlet中/和/*的区别详解

    目录 本文提纲 版本约定 ✍正文 点拨"市面上"的错误答案 1./用于Servlet,/*用于Filter 2./不会匹配.jsp请求,而/*可以匹配到.jsp请求 3./*匹配范围比/大 4./匹配所有url(路径+后缀),/*只匹配路径型 Servlet四种匹配方式 1. 精确匹配 2. 路径匹配 3. 后缀名匹配 4. 缺省匹配 URL匹配注意事项 匹配顺序 /和/*的区别 DispatcherServlet不拦截.jsp请求根因分析 ✍总结 本文提纲 版本约定 JDK:8 Se

  • C++ 中指针和引用有什么区别详解

    C++ 中指针和引用有什么区别详解 1.从内存上来讲  系统为指针分寸内存空间,而引用与绑定的对象共享内存空间,系统不为引用变量分配内容空间. 2指针初始化以后可以改变指向的对象,而引用定义的时候必须要初始化,且初始化以后不允许再重新绑定对象. 3.所以引用访问对象是直接访问.指针访问对象是间接访问. 4.如果pa是指针,那么*pa就是引用了. 但是两者在作为形参的时候非常相似,区别是指针拷贝副本,引用不拷贝.程序如下: #include<stdio.h> void pt(int * pta,

  • 基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常. throw是语句抛出一个异常. 语法:throw (异常对象); throw e; throws是方法可能抛出异常的声明.(用在声明方法时,表示该方法可能要抛出异常) 语法:[(修饰符)](返回

  • java 中同步方法和同步代码块的区别详解

    java 中同步方法和同步代码块的区别详解 在Java语言中,每一个对象有一把锁.线程可以使用synchronized关键字来获取对象上的锁.synchronized关键字可应用在方法级别(粗粒度锁)或者是代码块级别(细粒度锁). 问题的由来: 看到这样一个面试题: //下列两个方法有什么区别 public synchronized void method1(){} public void method2(){ synchronized (obj){} } synchronized用于解决同步问

  • java异常继承何类,运行时异常与一般异常的区别(详解)

    一.基本概念 Throwable是所有异常的根,java.lang.Throwable Error是错误,java.lang.Error Exception是异常,java.lang.Exception Throwable: 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类. Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题.大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java

  • Java多线程通讯之wait,notify的区别详解

    下面通过代码给大家介绍java多线程通讯之wait notify的区别,具体内容如下所示: class Res{ public String username; public String sex; } class Out extends Thread{ Res res; public Out(Res res){ this.res=res; } @Override public void run() { //写操作 int count=0; while (true){ // synchroniz

  • c语言获取用户输入字符串是scanf和gets的区别详解

    解释 gets(s)函数与 scanf("%s",&s) 相似,但不完全相同,使用scanf("%s",&s) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止. 1.scanf() 所在头文件:stdio.h 语法:scanf("格式控制字符串",变量地址列表); 接受字符串时:scanf("%s",

  • java线程中start和run的区别详解

    这篇文章主要介绍了java线程中start和run的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 public class Test1 extends Thread { @Override public void run() { while (true) { System.out.println(Thread.currentThread().getName()); } } public static void main(String[

  • C语言中指针 int *p=0;和int *p;*p=0;和”&“的关系和区别详解

    初学者在学习C语言的时候,最头疼的可能就是指针,话不多说.让我们直接进入正题 直接上代码 int main(void) { int *p = 0; printf("%d", *p); system("pause"); return 0; } 直接运行,好了,程序是不是报错了?那就对了.因为此时的int *p=0实际等于int *p; p=0; 让我们来验证一下对不对 int main(void) { int *p = 0; printf("%d"

随机推荐