1.error接口
import (
"errors"
"fmt"
)
func test ( a int , b int ) ( value int , err error ) {
if b == 0 {
err = errors. New ( "0不能作为除数" )
return
} else {
value = a / b
return
}
}
func main01 ( ) {
value, err := test ( 10 , 0 )
if err != nil {
fmt. Println ( err)
} else {
fmt. Println ( value)
}
}
2.panic异常处理
import "fmt"
func test1 ( ) {
fmt. Println ( "hello world1" )
}
func test2 ( ) {
panic ( "hello world2" )
}
func test3 ( ) {
fmt. Println ( "hello world3" )
}
func main02 ( ) {
test1 ( )
test2 ( )
test3 ( )
}
3.defer延迟调用
import "fmt"
func main0301 ( ) {
fmt. Println ( "我爱你" )
defer fmt. Println ( "我也爱你" )
defer fmt. Println ( "我还爱你" )
fmt. Println ( "我爱死你" )
}
func test4 ( ) {
fmt. Println ( "hello world" )
}
var value int
func test5 ( a int , b int ) {
value = a + b
}
func test6 ( value int ) {
fmt. Println ( value)
}
func main0302 ( ) {
test4 ( )
defer test5 ( 10 , 20 )
test6 ( value)
}
func main0303 ( ) {
a := 10
b := 20
defer func ( a int , b int ) {
fmt. Println ( a)
fmt. Println ( b)
} ( a, b)
a = 100
b = 200
fmt. Println ( a)
fmt. Println ( b)
}
4.recover接口
import "fmt"
func demo ( i int ) {
defer func ( ) {
err := recover ( )
if err != nil {
fmt. Println ( "demo函数异常:19-33行" , err)
}
} ( )
fmt. Println ( "1" )
var p * int
* p = 123
fmt. Println ( "2" )
var arr [ 10 ] int
arr[ i] = 100
fmt. Println ( arr)
}
func demo1 ( ) {
fmt. Println ( "hello world" )
}
func main04 ( ) {
demo ( 11 )
demo1 ( )
}
5.文件创建
import (
"fmt"
"os"
)
func main05 ( ) {
fp, err := os. Create ( "D:/a.txt" )
if err != nil {
fmt. Println ( "文件创建失败" )
return
}
defer fp. Close ( )
fmt. Println ( "文件创建成功" )
}
6.写入文件
import (
"fmt"
"io"
"os"
)
func main0601 ( ) {
fp, err := os. Create ( "D:/a.txt" )
if err != nil {
fmt. Println ( "文件创建失败" )
return
}
defer fp. Close ( )
n, _ := fp. WriteString ( "美女\r\n" )
fmt. Println ( n)
fp. WriteString ( "来玩啊" )
}
func main0602 ( ) {
fp, err := os. Create ( "D:/a.txt" )
if err != nil {
fmt. Println ( "文件创建失败" )
return
}
defer fp. Close ( )
str := "锄禾日当午"
b := [ ] byte ( str)
fp. Write ( b)
}
func main0603 ( ) {
fp, err := os. OpenFile ( "D:/a.txt" , os. O_RDWR, 6 )
if err != nil {
fmt. Println ( "文件创建失败" )
return
}
defer fp. Close ( )
n, _ := fp. Seek ( - 3 , io. SeekEnd)
fmt. Println ( n)
}
7.读取文件
import (
"bufio"
"fmt"
"io"
"os"
)
func main0701 ( ) {
fp, err := os. Open ( "D:/a.txt" )
if err != nil {
fmt. Println ( "文件打开失败" )
return
}
defer fp. Close ( )
b := make ( [ ] byte , 100 )
fp. Read ( b)
fmt. Println ( string ( b) )
}
func main0702 ( ) {
fp, err := os. Open ( "D:/a.txt" )
if err != nil {
fmt. Println ( "文件打开失败" )
return
}
defer fp. Close ( )
r := bufio. NewReader ( fp)
b, _ := r. ReadBytes ( '\n' )
fmt. Print ( string ( b) )
b, _ = r. ReadBytes ( '\n' )
fmt. Println ( string ( b) )
}
func main0704 ( ) {
fp, err := os. Open ( "D:/源文件.txt" )
if err != nil {
fmt. Println ( "文件打开失败" )
return
}
defer fp. Close ( )
b := make ( [ ] byte , 20 )
for {
n, err := fp. Read ( b)
if err == io. EOF {
break
}
fmt. Print ( string ( b[ : n] ) )
}
}
func main0705 ( ) {
fp, err := os. Open ( "D:/源文件.txt" )
if err != nil {
fmt. Println ( "文件打开失败" )
return
}
defer fp. Close ( )
r := bufio. NewReader ( fp)
for {
b, err := r. ReadBytes ( '\n' )
fmt. Print ( string ( b) )
if err == io. EOF {
break
}
}
}
8.文件拷贝
import (
"fmt"
"io"
"os"
)
func main08 ( ) {
fp1, err1 := os. Open ( "D:\\0705基础班\\01_Go语言基础第09天(面向对象下)\\03视频\\02接口定义和使用.avi" )
fp2, err2 := os. Create ( "D:/test.avi" )
if err1 != nil || err2 != nil {
fmt. Println ( "拷贝失败" )
return
}
defer fp1. Close ( )
defer fp2. Close ( )
b := make ( [ ] byte , 1024 * 1024 )
for {
n, err := fp1. Read ( b)
if err == io. EOF {
break
}
fp2. Write ( b[ : n] )
}
fmt. Println ( "拷贝完成" )
}