请教一个关于println的问题

wzywsk · 2013-11-07 05:18:43 · 4162 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2013-11-07 05:18:43 的主题,其中的信息可能已经有所发展或是发生改变。

最近看到go里有个println的函数,请问下这个函数是不是和fmt.Println这个函数是一样的?为什么println这个函数有时候打印不出东西来而fmt.Println却可以


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4162 次点击  
加入收藏 微博
2 回复  |  直到 2013-11-17 14:14:20
polaris
polaris · #1 · 11年之前

不一样的。正式环境别用println。println是在C基本实现的;而fmt.Println是Go标准库的;

fmt.Println功能比println强大很多。

ty4z2008
ty4z2008 · #2 · 11年之前

题主应该是看到使用的时候是fmt.println()吧?在go中println是fmt包下面的一个成员函数,先看段代码:

func Println(a ...interface{}) (n int, err error) {
    return Fprintln(os.Stdout, a...)
}

从上面那段代码可以看出,这个函数内部调用了OS包中的成员函数:stdout; OS包是go与系统硬件打交到的一个包。再追溯到os包中的Stdout函数:

Stdout = getStdHandle(STD_OUTPUT_HANDLE)

上面那一条代码,是os包中的一条声明语句:GetStdHandle是一个Windows API函数。它用于从一个特定的标准设备(标准输入、标准输出或标准错误)中取得一个句柄。

刚刚入门Go不久。希望能够帮到你理解

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传