go语言学习笔记10
error接口
我们定义了一个函数,然后设定了2个返回值,一个是返回a/b的值,再一个是返回错误的信息。
然后我们在主函数中调用我们定义的函数,接收值和错误的信息。
panic异常
上面的代码中我们在helloworld2的后面一条代码加上了panic函数,然后当程序遇到panic的时候会自动终止。
延迟调用
延迟调用会在程序最后的时候执行,例如上面的代码,输出完chognqing再输出test。
如果在defer调用时将函数参数先放在内存中,是一个独立的空间,不会因为改变值而影响数据。
例如上面的代码,虽然后面重新给a和b赋值了,但是在之前已经将a和b的值放在内存中了,所以最后的结果还是30。
但是如果不传递参数,使用外部变量,如果外部变量修改,会影响函数的值。
例如上面的结果为444。
recover拦截
错误拦截到出现错误之前。当我调用函数为10时:
如果我把recover去掉:
所以recover拦截会在错误之前拦截。
新建文件
os.Create(文件名)函数创建一个文件,文件名可以写绝对路径,也可以写相对路径。
他的返回值为文件指针和错误信息。
如果文件不存在会创建文件,如果文件存在会清空源文件内容。
写入内容
反斜杠在程序中表示的是转义字符,会将后面字符进行转义,但是\表示一个
在写路径时可以使用/正斜杠来代替\反斜杠。
我们利用文件指针fp调用writeString方法将字符串写到文件中。
注意的是\n不会换行,因为在Windows文本文件中换行是以\r\n,在Linux中换行是以\n
我们可以将一个字符串写入文件中,我们也可以定义一个字符切片写入文件中,我们用writeString方法还有2个返回值,一个是写入字符串的长度,另外一个是错误信息。
打开文件有2种方法:
1、os.Open(文件名) 只读方式打开文件
2、os.OpenFile(文件名,打开方式,打开权限) 如果文件不存在报错
打开方式:
os.O_RDONLY(只读方式打开) os.O_WRONLY(只写方式打开) os.O_RDWR(可读可写方式打开) os.O_APPEND(追加方式打开)
打开权限:
0-7 rwx 6 (rw-)读写权限 7(rwx)读写执行权限
用fp.Seek(0, io.SeekEnd)可以获取从文件起始到结尾有多少个字符。
用WriteAt([]byte(“test”), count)可以按指定位置写入。
读取内容
块读取,先定义一个buf为5个字节。然后我们用一个死循环输出全部的内容,io.EOF表示的是文件的结尾,当读取到文件末尾,返回值为errors.new(“eof”)这时候结束。
行读取,截取的标志位\n,可以使用ascll码中的任意字符,例如上面的代码,我们是以g分开进行行读取,也是利用死循环和break将文件输出完。