你不能在Go中这样做,因为你无法获得当前goroutine中当前活动函数的堆栈帧。 这样做并非不可能,因为我将在下面进一步说明,但问题是没有公共API来可靠地完成这项工作。 在引发panic时打印的堆栈跟踪中可以看到它可以完成:在这种情况下,堆栈上的所有值都被转储。 如果您对如何实际生成堆栈跟踪感兴趣,那么请查看运行时包中的genstacktrace 。 至于问题的解决方案,您可以按照建议的方式解析源代码。 如果您有冒险精神,可以解析runtime.Stack提供的堆栈跟踪。 但要注意,有很多缺点,你会很快 ...