13.3 包-创建自己的包

除了使用标准库和第三方提供的包以外,有时还需要自己创建包,以提高程序代码的模块化程度和可复用性。

  • 创建包目录。

        项目自用的包,在项目目录下创建包目录,跨项目的公共包,在[GOPATH]/src下创建包目录。

  • 设置包名称。

        在组成包的每个源文件的最开始处用package语句指定包的名称,包名与包目录名最好一致。

  • 导出标识符。

        所有提供给包用户使用的类型、常量、变量、函数和方法,名称首字母必须大写,以示导出(即公有/可访问)。

  • 运行包测试

        在包内编写测试程序,命名为:[包名]_test.go

        在包目录下执行启动测试命令:go test

// 自己创建的温度计算包
// temp.go
// Package temp includes some functions about temperature
package temp

// C2F °C->°F
func C2F(c float64) float64 {		// 函数名首字母大写,表示公有/可访问
    return c*9/5 + 32
}

// F2C °F->°C
func F2C(f float64) float64 {		// 函数名首字母大写,表示公有/可访问
    return (f - 32) * 5 / 9
}
// temp_test.go
// 测试自己创建的温度计算包temp中的函数
package temp
import "testing"		// 标准库testing测试框架
type tempTest struct {
    i float64			// 待计算值
    expected float64	// 期望值
}
var C2FTests = []tempTest{
    {4.1, 39.38},
    {10, 50},
    {-10, 14},
}
var F2CTests = []tempTest{
    {32, 0},
    {50, 10},
    {5, -15},
}
func TestC2F(t *testing.T) {	// 测试函数必须以Test开头
    for _, tt := range C2FTests {
        actual := C2F(tt.i)
        if actual != tt.expected {
            t.Errorf("expected %v, actual %v",
                tt.expected, actual)
        }
    }
}
func TestF2C(t *testing.T) {
    for _, tt := range F2CTests {
        actual := F2C(tt.i)
        if actual != tt.expected {
            t.Errorf("expected %v, actual %v",
                tt.expected, actual)
        }
    }
}
// 打印输出:
// PASS
// ok package/temp 0.391s 

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值