本文通过一个实现加减乘除运算的小程序来介绍go函数的使用,以及使用函数的注意事项,并引出了对包的了解和使用 。实现加减乘除运算传统方法实现:
var n1 float64 = 1.2var n2 float64 = 2.1var opt byte = '+'var res float64switch opt {case '+':res = n1 + n2case '-':res = n1 - n2case '*':res = n1 * n2case '/':res = n1 / n2default:fmt.Println("不合法的运算符")}fmt.Printf("res=%v", res)
以上代码的问题:- 需求变更,取模,代码不够灵活
- 不利于维护
- 代码冗余
- 封装
- 传参调用
- 返回值
执行语句
return 返回值列表
}
上面代码改写:
func calc(n1 float64, n2 float64, opt byte) float64 { var res float64 switch opt { case '+':res = n1 + n2 case '-':res = n1 - n2 case '*':res = n1 * n2 case '/':res = n1 / n2 default:fmt.Println("不合法的运算符") } return res}func main() { fmt.Println("hello fn") var n1 float64 = 1.2 var n2 float64 = 2.1 var opt byte = '+' var result float64 = calc(n1, n2, opt) fmt.Printf("%T %v \n", result, result)}
函数的问题一个文件里出现超级多的函数utils.go
文件,专门用于定义函数,让其它文件来调用,工具函数的封装,db.go
文件,专门定义对数据库操作的函数main.go
文件,引入其它文件,使用工具函数,代码更专注继而引出包的概念,分门别类的使用,也有利于多人协同开发,相同的函数名可以存在不同的包下面包的原理包的本质,实际上就是创建不同的文件夹,来存放程序文件 。
包的介绍go的每一个文件都属于一个包的,也就是说go以包的形式来管理文件和项目目录结构的 。
大写字母开头的标识符,表示该标识符可导出
作用:
- 区分相同名字的函数、变量等标识符
- 当程序文件很多时,很好的管理项目
- 控制函数、变量的访问范围,即作用域
package util
引入使用(封装实现加减乘除的工具函数)包名.函数名省略
GOPATH/src
或 GOROOT/src
,前提是在 env.GO111MODULE=off
的情况下import "包的路径"// GOPATH or GOROOT src, env.GO111MODULE=off
- utils/utils.go 文件
package utilsimport "fmt"// 标识符大写,表示可导出func Calc(n1 float64, n2 float64, opt byte) float64 { var res float64 switch opt { case '+':res = n1 + n2 case '-':res = n1 - n2 case '*':res = n1 * n2 case '/':res = n1 / n2 default:fmt.Println("不合法的运算符") } return res}
- main/main.go 文件
import ( "fmt" "go_code/fndemo1/utils")func main() {var n1 float64 = 1.233 var n2 float64 = 2.111 var opt byte = '+' var result float64 = utils.Calc(n1, n2, opt) fmt.Printf("%T %.2f= \n", result, result)}// %.2f默认宽度,精度2// float64 3.34
包的注意事项- 包名建议跟目录名保持一致,也可以不一致
import "包名"
这个包名,就是 package "包名" 定义的包名,跟目录名字没有关系,倘若 package 定义的名字跟目录名不一致,引入包的时候,要以package定义的包名为准 。
- package "包名" 必须在文件的第一行,然后再 import
- 引包路径,GOPATH or GOROOT src目录下,
env.GO111MODULE
- 包里面要暴露的函数,函数名必须大写,表示可导出
- 如果包名比较长,go支持取别名,定义别名之后,原先的包名就不好使了
经验总结扩展阅读
- 烤腰果的温度和时间
- 猪蹄炖不烂怎么补救
- 二氧化硫葡萄酒对人体的危害
- 感慨怀念小时候的句子 发朋友圈回忆童年的句子
- 怎么判断蜂针在不在
- 怀念儿时的记忆的唯美短句 儿时的味道满满的回忆签名短句
- 怀念儿时味道的文案 怀念小时候长大后感慨句
- 面包可以放冰箱保鲜吗
- 生锈的锅炒菜能吃吗
- 冬天冰冻的衣服变干是什么现象