说明
本文为GO语言基础的学习笔记,涉及异常处理和文件读写。
异常处理和文件读写
error 接口
error 用于提示编译时异常和运行时异常等1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25package main
import (
"fmt"
"errors"
)
func divide(a int, b int) (value int, err error) {
if b == 0 {
err = errors.New("0不能作为除数")
return
} else {
value = a / b
return
}
}
func main() {
value,err:=divide(10,0)
//err不过不等于空表示有错误信息
if err != nil{
fmt.Println(err)
}else {
fmt.Println(value)
}
}
panic 异常处理
1 |
|
defer 延迟调用
defer函数会在程序运行结束前调用,1
2
3
4
5
6
7
8
9
10
11
12
13func main() {
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)
}
//输出顺序100, 200, 10, 20
Stdin 标准输入
os.Stdin中读取
os.Stdin.Read()1
2
3
4
5
6
7
8
9
10
11
12func main() {
//申请缓存空间
var buffer [512]byte
//将输入读入缓存
n, err := os.Stdin.Read(buffer[:])
if err != nil {
fmt.Println("read error:", err)
return
}
fmt.Println("count:", n, ", msg:", string(buffer[:]))
}
bufio读取输入
1 | package main |
文件
文件创建
创建文件: fp,err = os.Creat(“文件路径”)
打开文件: fp.OpenFile()
文件关闭: fp.Close()
文件写入: fp.WriteString(“content”) fp. Write([]byte)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15func fileCreate(){
fp, err := os.Create("F:/test.txt")
if err!= nil {
fmt.Println("create file failed")
return
}
defer fp.Close()
n ,_ := fp.WriteString("Hello Nanari\r\n")
fmt.Println(n)
fp.WriteString("O hai yo\r\n")
//通过字符串获取字符切片
b := []byte("Good morning Nanari")
fp.Write(b)
}
1 | func fileOpen(){ |
文件读写
1 | func Openwrite(){ |
文件拷贝
1 | func copyFile(){ |
字符串处理
查找子串: sub := strings.Contains(str,”subString”) //返回值为布尔类型
查找子串并返回下标: index := strings.Index(str,”substring”)
拼接子串: str_join := strings.Join(str,” “)
字符串重复: str := strings.Repeat(str,2)
字符串替换: str := strings,Replace(sourceStr,toBereplacedStr,ReplaceStr,RepalceTime)
* ReplaceTime = -1 表示全部替换
字符串切割,返回[]string: s := strings.Split(sr,”-“)
字符串去首尾: s:= strings.Trim(str,”sub”)
字符串去空格: s:= strings.Fields(str)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40func stringsDemo(){
//查找
str := "Hello"
value := strings.Contains(str,"lo")
i := strings.Index(str,"lo")
fmt.Println(i) //3
if value {
fmt.Println(str,"contain","lo") //Hello contain lo
} else {
fmt.Println("no find")
}
//拼接
str2 := []string{"I","am","ironman"}
str3 := strings.Join(str2," ")
fmt.Println(str3) //I am ironman
//重复
str4 := strings.Repeat(str,2)
fmt.Println(str4) //HelloHello
//替换
str5 := strings.Replace(str4,"He","She",-1)
fmt.Println(str5) //ShelloShello
//切割
number := "123-345-567-789"
str6 := strings.Split(number,"-")
fmt.Println(str6) //[123 345 567 789]
//去首尾
str7 :="++++++++Cplusplus+++++++"
str8 := strings.Trim(str7,"+")
fmt.Println(str8)//Cplusplus
//去空格
str9 :="karata dai jyo bu ?"
str10 := strings.Fields(str9)
fmt.Println(str10)//[karata dai jyo bu ?]
}