初学go语言println() vs fmt.Println

初学Go语言,会不会有如下疑问?

// test.go
package main

import (
	"fmt"
	"unsafe"
)

const (
	Unknown = "abc_const"
	Female  = len(Unknown)
	Male    = unsafe.Sizeof(Female)
)

// const (
// 	a = iota
// 	b
// 	c
// )

const (
	a = iota //0
	b        //1
	c        //2
	d = "ha" //独立值,iota += 1
	e        //"ha"   iota += 1
	f = 100  //iota +=1
	g        //100  iota +=1
	h = iota //7,恢复计数
	i        //8
)

func main() {
	const LENGTH int = 10
	const WIDTH int = 5
	var area int
	// const a, b, c = 1, false, "str" //多重赋值

	area = LENGTH * WIDTH
	fmt.Printf("面积为 : %d\n", area)
	println()
	println(Unknown, Female, Male)

	fmt.Println(a, b, c, d, e, f, g, h, i)
}

输出:

面积为 : 50
0 1 2 ha ha 100 100 7 8
              
abc_const 9 8

此处为什么先fmt.Print函数簇执行,后println执行?

println vs fmt.println

//println: The println built-in function formats its arguments in an //implementation-specific way and writes the result to standard error. 
//Spaces are always added between arguments and a newline is appended. 
//println is useful for bootstrapping and debugging; 
//it is not guaranteed to stay in the language.

//fmt.Println: Println formats using the default formats for 
//its operands and writes to standard output. 
//Spaces are always added between operands and a newline is appended. 
//It returns the number of bytes written and any write error encountered.

println是用于打印标准输出,fmt.Println 是用于打印标准输出。
两个不同的描述符,把两个流都输出到终端,输出的先后顺序不确定。

解决办法:可以把流分开输出, 各看各的就没问题了

go run test.go 1>std_out.log 2>std_err.log

cat std_err.log

abc_const 9 8
cat std_out.log
面积为 : 50
0 1 2 ha ha 100 100 7 8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值