请问为何结果显示的顺序奇怪?

来源:2-4 条件语句

CYW好好学习

2019-07-23

package main

import (
	"fmt"
	"io/ioutil"
)

func eval (a,b int , op string)int{
	var result int
	switch op {
	case "+":
		result = a + b
	case "-":
		result = a - b
	case "*":
		result = a*b
	case "/":
		result = a / b
	default:
		print("unsupported operator:"+ op)
	}
	return result
}

func main(){
	const filename = "abc.txt"
	//contents,err := ioutil.ReadFile(filename)
	//if err != nil{
	//	fmt.Println(err)
	//}else {
	//	fmt.Printf("%s\n",contents)
	//}
	if contents,err := ioutil.ReadFile(filename);err != nil{
		fmt.Println(err)
	}else {
		fmt.Printf("%s\n",contents)
	}

	fmt.Println(eval(3,3,"o"))
}

运行结果展示的顺序有点奇怪:
abcde
unsupported operator:o12345
hello
again
0
为什么 unsupported operator:o 被插在了中间???而不是在最后?
还有 panic 与 println 有何区别?

写回答

1回答

phper小白

2019-07-23

panic 会已报错的形式中断程序运行

println 与 fmt.Println 是不同的,我了解的好像是因为会有缓存的问题,所有存在先后。 你打印的方法都采用fmt.Println 就会是正确的了

1
1
CYW好好学习
谢谢你的回答
2019-07-23
共1条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程