如何在字符串类型的指针接收器方法中访问其字符串值?
问题解决:自定义字符串类型错误的拼接问题
你遇到的报错原因很明确:se是*StateSyncError指针类型,哪怕它的底层类型是string,指针类型和原生string类型也不能直接用+拼接。~string是泛型场景下的类型约束语法,和当前需求不匹配,所以起不到作用。
给你两种简单的解决办法,完全没必要改用结构体:
方法一:改用值接收器
把Error方法的接收器改成值类型,这样se就是StateSyncError类型,转成string后即可完成拼接:
type StateSyncError string func (se StateSyncError) Error() string { return "state sync error: " + string(se) }
方法二:保留指针接收器,解引用后转换
如果一定要用指针接收器,只需先解引用拿到底层的string值再转换即可:
type StateSyncError string func (se *StateSyncError) Error() string { return "state sync error: " + string(*se) }
至于是否要改用结构体:完全没必要,除非你后续需要给这个错误类型添加更多字段(比如错误码、堆栈信息等),否则基于string的自定义类型足够满足需求。
内容的提问来源于stack exchange,提问作者baal_imago
相关产品推荐
相关产品推荐

