本小节讲的是自定义包的使用,我们从李老师的练习题引入。
练习题:编写一个clac包实现加减乘除四个功能函数,在snow这个包中导入并使用加减乘除四个函数实现数学运算。
题目不难,我先贴代码:
// main.go 程序入口
package main
import (
"ex_package/calc"
"fmt"
)
func main() {
fmt.Println(calc.Add(1,1))
fmt.Println(calc.Sub(1, 1))
fmt.Println(calc.Mul(1,2))
fmt.Println(calc.Div(1, 0))
fmt.Println(calc.Div(2, 1))
}
// calc.go
package calc
import "fmt"
func Add(a, b int) (res int) { // 加
res = a+b
return
}
func Sub(a, b int) (res int ) { // 减
res = a - b
return
}
func Mul(a, b int) (res int) { // 乘
res = a * b
return
}
func Div(a, b int) (res int) { // 除
defer func() {
err := recover() // 以防除数为零的情况
if err != nil {
fmt.Print("除数不能为零!!!默认输出结果:")
}
}()
res = a / b
return
}
我的目录结构及运行截图:
截图虽丑,但是醒目嘛哈哈哈!以下是我遇到的几个坑:
- 目录结构这个我费了些功夫在网上查资料,有的说到改环境变量什么的,我懒嘛,就想自己弄出来这个。我坚持这样的目录结构与包导入方式(这个要命)去写,结果:
运行时报错!奇怪啦!包也找得到就是报路径错误,上网查一堆让改环境变量的文。不过我今天真是运气好!光标放到引用的函数上一个Alt+Enter试了下自导包,搞掂!!
注意:小工程可以用俺这种方式用自定义包,大项目的话应该要慎重哟 - 变量与函数的可见性!
按理说这个很好记:首字母大写外包才可见。可是用时候就给忘记了。包中的全局变量和函数也是以首字母大小写去分包外可见性的,首字母大写包外可见。
这节内容不多,Golang的自定义包的使用让我想起了Java中的类,为了更好的可扩展性!