stm32 开发中经常能见到这样的函数:
_weak void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart)
{
/* Prevent unused argument(s) compilation warning */
UNUSED(huart);
/* NOTE : This function should not be modified, when the callback is needed,
the HAL_UART_AbortReceiveCpltCallback can be implemented in the user file.
*/
}
我只需要随便在一个地方重写这个函数,它最终调用的就是我的函数:
void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart)
{
//做一些爱做的事情
}
如果我只想定义些简单的函数,用户可以在自己喜欢的地方重写它,go 中怎么实现类似的功能,或者 go 中有更好的实现?
1
k9982874 81 天前 via Android
没有,go 没有函数重载,用 interface
|
2
pagxir 81 天前 via Android 3
这个是连接器跟装载器的特性,如果会写 ld 脚本,理论可以实现
|
3
kumoocat 81 天前
可以参考 sql.Register
https://pkg.go.dev/database/sql#Register |
4
povsister 81 天前
go 不需要这种花里胡哨的写法。
binary 分发:cgo 走动态链接 源代码分发:走 build constraint ,你提供一个基础版本的实现,让用户自己写个源代码函数实现,然后 build flag 就可以了 |
5
Maboroshii 81 天前 via Android
interface 或者传一个函数指针也能实现相同的功能吧,门槛也低
|
6
afxcn OP 好像用 go 实现这个没什么意义,但这思路用在代码生成上倒是很不错。
|