-
我的 Go 服务从一个 interface 里取值时写了 s := val.(string)、平时跑得稳稳的,某天上游传进来一个不是字符串的值整个服务当场 panic 崩溃,我盯着堆栈愣了半天才想起来 Go 的类型断言还有个带逗号 ok 的安全形式而我图省事用的那个单返回值版本断言失败是会直接炸的深度复盘
我有段 Go 代码从一个存着 any(interface{})的地方取出一个值,我知道它应该是字符串就直接 s := val.(string) 拿来用,上线后跑了很久平安无事,因为上游一直传的都是字符串。直到某天上游因为一个边缘场景传进来一个 nil(或一个数字),整个服务就崩了:日志里一行刺眼的 panic: interface conversion: interface {} is nil, …- 0
- 0
type switch
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!

