函数

代码封装起来,为了重用

func 名字() {
  代码
}

func 名字(参数, 参数, ...) 返回值 {

}

函数:重用代码
参数:函数的输入
返回值:函数的输出

我们先写一个简单的show函数

go func 参数返回 golang函数返回值_go func 参数返回

go func 参数返回 golang函数返回值_go func 参数返回_02


go func 参数返回 golang函数返回值_Go_03


go func 参数返回 golang函数返回值_字符串_04


go func 参数返回 golang函数返回值_二进制文件_05


go func 参数返回 golang函数返回值_Go_06


我们写个有参数的函数:

go func 参数返回 golang函数返回值_Go_07


go func 参数返回 golang函数返回值_二进制文件_08


我们可以给函数添加返回值

go func 参数返回 golang函数返回值_go func 参数返回_09


go func 参数返回 golang函数返回值_golang_10


函数执行到return了,就结束了,后面的代码不会执行了,编译器会提示

go func 参数返回 golang函数返回值_golang_11


go func 参数返回 golang函数返回值_go func 参数返回_12

我们再举个例子

我们的Go有很多库,其中math库有圆周率π

go func 参数返回 golang函数返回值_二进制文件_13

go func 参数返回 golang函数返回值_golang_14


go func 参数返回 golang函数返回值_Go_15


go func 参数返回 golang函数返回值_Go_16


go func 参数返回 golang函数返回值_Go_17


go func 参数返回 golang函数返回值_go func 参数返回_18


go func 参数返回 golang函数返回值_二进制文件_19

文件操作

go的函数可以有多个返回值
func xxx(...) (int,float32) {

}

go func 参数返回 golang函数返回值_字符串_20


写函数读这个文件的2个数字

go func 参数返回 golang函数返回值_go func 参数返回_21


go func 参数返回 golang函数返回值_字符串_22


前面的这些数字是data,读取出来是以byte为单位的,看不到里面的东西,是二进制文件 后面的nil对应的是error输出的,

nil:空的,空错误就是没有错误

go func 参数返回 golang函数返回值_二进制文件_23


所以,我们要这么做:

go func 参数返回 golang函数返回值_Go_24

go func 参数返回 golang函数返回值_二进制文件_25


我们进行更多的操作:

我们知道,没有222这个文件,所以,我们执行看看

go func 参数返回 golang函数返回值_字符串_26


go func 参数返回 golang函数返回值_字符串_27

go func 参数返回 golang函数返回值_go func 参数返回_28


如果出错了,我们是要告诉调用方的。

方法1:通过特殊的返回值

go func 参数返回 golang函数返回值_字符串_29


但是,这个文件中也有可能装的就是-1,-1啊

go func 参数返回 golang函数返回值_Go_30


方法2:

panic,把错误甩出去

就可以中断这个程序的执行,并且让调用方知道出错了

go func 参数返回 golang函数返回值_Go_31


go func 参数返回 golang函数返回值_go func 参数返回_32


外部可以通过拦截这个panic来知道到底是出错了还是正常情况
如果现在数据都读不到了,程序也就不需要继续往下执行了

go func 参数返回 golang函数返回值_golang_33

如何从字符串里读东西?

go func 参数返回 golang函数返回值_二进制文件_34

Sscanf的第一个参数,是你要从哪个字符串读取数据,第二个是格式化,然后是参数

go func 参数返回 golang函数返回值_golang_35


go func 参数返回 golang函数返回值_Go_36


go func 参数返回 golang函数返回值_Go_37

go func 参数返回 golang函数返回值_go func 参数返回_38


go func 参数返回 golang函数返回值_二进制文件_39

fmt的输入输出

fmt.Scanf     从用户输入(stdin)
fmt.Sscanf    从string输入
fmt.Fscanf    从File输入

fmt.Printf    往用户输出(stdout)
fmt.Sprintf   往string里面输出
fmt.Fprintf   往File输出

File不仅仅是指文件,也可以指网络上的地址