Go降龙十八式

本文介绍了Go语言中实现代码封装的几种方法,包括项目私有包的内部结构、私有接口的定义以防止误实现,以及针对不同操作系统实现特定功能的文件组织方式。同时,讲解了如何在编译期间检查接口实现和利用编译标记实现条件编译,确保代码在不同环境下的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 项目私有包

当项目多时一些项目定义的常量和函数如果不想被别的项目引用到,那么你可以在项目目录下建一个 internal 的文件夹,然后将不想被别人引用的都放到该文件夹下,在Go语言中 internal 下面的东西只能本项目使用,无法被其他项目引用

2. 私有接口

如果你定义了一个接口,不想被其他包误实现的话,你可以给该接口定义一个私有函数。

type Coder interface {
	i() // 定义一个私有函数,防止其他包误实现
	Code()
}

3. 多系统

如果某个功能,在windows、mac、Linux上需要不同的执行方式,那么我们可以定义3个文件,分别为这三个系统提供不一样的行为,当系统是 windows时,它会默认引用 *_windows.go 的文件,当系统是mac时它会引用 *_darwin.go文件,当系统是Linux时它会自动引用*_linux.go的文件,根据后缀的不同,在不同系统上引用的文件也不相同

4. 编译期校验接口实现

有时候一个结构体一定需要实现某个接口,但又不想在运行期才发现该结构体没实现,这时你可以定义一个空变量,让编译器来校验是否该结构体实现了某接口

// Error 结构体一定要实现Coder接口,不然编译器会报错
var _ Coder = &Error{}

5. 高级编译

5.1 指定文件在什么平台上编译

通过 // +build windows 可以保证该文件仅在windows参与编译, 注意要和package隔开一行

// +build windows

package main

// +build !windows 除了window平台,其他平台都编译

5.2 编译 tag

生产文件

// +build prod

package main
//...

开发文件

// +build dev

package main
//...

指定tag进行编译

go build -tags prod -o main

未完待定。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值