go语言错误处理
go语言错误处理错误处理基本思路1234result, err := someFunction() //调用函数通常会返回一个值和一个错误对象。if err != nil { //错误对象如果为nil,表示没有错误;否则,包含了关于该错误的信息 log.Fatal(err) //将错误写入日志并退出} 自定义错误信息1234567type MyError struct { Message string} func (e *MyError) Error() string { return fmt.Sprintf("错误信息是:%s", e.Message)} 错误处理方法使用error包12345//假设这是一个模拟除法的函数,n是除数if n == 0 { return 0, fmt.Errorf("无效的参数n: %d", n) //fmt.ERRorf可以格式化输出错误信息 return 0,errors.New("division ...
go联动dbms
最基本的样式123456789101112131415161718192021222324252627282930313233import( "database/sql" _ "github.com/go-sql-driver/mysql")func main(){ db,err := sql.Open("mysql","user:password@tcp(127.0.0.1:3306/hello") rows,err:=db.Query("select id,name from users where id = ?",1) if err!=nil{ //XXX } defer func(){ err = rows.Close() } var users []User for rows.Next(){ bar user U...
go语言函数与指针
go语言函数基础函数形式123func add(a, b int) int { return a + b} 变长参数传入12345678910111213// 函数Myfunc()接受任意数量的参数,这些参数的类型全部是intfunc Myfunc(numbers ...int){//...type只能是最后一个参数 for _,number := range numbers { fmt.Println(number) }}Myfunc(1,2,3,4,5,6)slice := []int{1,2,3,4,5,6}Myfunc(slice...)//传递切片时需要在末尾加上 ... 作为标识func Myfunc(i ...interface{}){ //可以传入任意数量的任意类型的参数} 匿名函数匿名函数的基本形式123func(a,b int) int { return a+b} 匿名函...
go语言基础变量与拷贝
go语言基础变量类型变量定义12345var a int/float32/float64/string/bool/... = valuevar b := value //自动确定类型var c [3][4] int //2维int型数组interface{}//存储任意类型//可以只声明不赋值,数值类型默认为0 布尔类型默认为false 字符串为"" 其他基本为nil nilnil 是一个预先声明的标识符,指针、通道、函数、接口、map、切片的零值就是nil nil 是没有默认类型的,他的类型具有不确定性,我们在使用它时必须要提供足够的信息能够让编译器推断 nil 期望的类型 以下是 nil 的一些注意事项: 1. 声明一个 nil 的 map,map 可以读数据,但是不能写数据 2. 关闭一个 nil 的 channel 会引发 panic 3. nil切片不能进行索引访问,会引发 panic 4. 方法接收者为 nil 时,如果在方法内使用到了会引发 panic 5. 空指针一个没有任何值的指针 切片(变...
go语言输入输出与控制流
go语言输入输出输入fmt包的输入123fmt.Scanf("%d %f %s %t %c", &a, &b, &str, &c, &d) //格式化输入,与C相同fmt.Scan(&a, &b, &c, &str) //与Scanf类似但无格式化fmt.Scanln(&a, &b, &c, &str) //读取一整行输入 main函数传参通过OS包的Args获取main的参数(此方法不能确定参数类型) os.Args是一个[]string类型,命令行中的参数会被写入到os.Args数据中 12345func main(){ for i,j=range os.Args{ fmt.Println(j) //os.Args[0]存放的是程序地址 }} 通过flag包的Parse()获取参数(此方法可以指定类型,携带tag) 需要声明参数对应的类型和格式 123456var b = flag.S...
