首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

何在Go的函数得到调用函数名?

原文作者:smallnest 有时候在Go的函数调用的过程,我们需要知道函数被谁调用,比如打印日志信息等。例如下面的函数,我们希望在日志打印出调用者的名字。...0 代表当前函数,也是调用runtime.Caller的函数。1 代表上一层调用者,以此类推。...func Callers(skip int, pc []uintptr) int Callers用来返回调用站的程序计数器, 放到一个uintptr。...比如在上面的例子增加一个trace函数,被函数Bar调用。 1…… 2func Bar() { 3 fmt.Printf("我是 %s, %s 又在调用我!...如果因为内联程序计数器对应多个函数,它返回最外面的函数。 它的返回值是一个*Func类型的值,通过*Func可以获得函数地址、文件行、函数名等信息。

5.2K30
您找到你想要的搜索结果了吗?
是的
没有找到

何在 Go 函数获取调用者的函数名、文件名、行号...

背景 我们在应用程序的代码添加业务日志的时候,不论是什么级别的日志,除了我们主动传给 Logger 让它记录的信息外,这行日志是由哪个函数打印的、所在的位置也是非常重要的信息,不然排查问题的时候很有可能就犹如大海捞针...对于在记录日志时记录调用 Logger 方法的调用者的函数名、行号这些信息。...、该调用在文件的行号。...获取调用者的函数名 runtime.Caller 返回值第一个返回值是一个调用栈标识,通过它我们能拿到调用栈的函数信息 *runtime.Func,再进一步获取到调用者的函数名字,这里面会用到的函数和方法如下...真正要实现日志门面之类的类库的时候,可能是会有几层封装,想在日志里记录的调用者信息应该是业务代码打日志的位置,这时要向上回溯的层数肯定就不是 1 这么简单了,具体跳过几层要看实现的日志门面具体的封装情况

6.3K20

【Kotlin 协程】Flow 异步流 ① ( 以异步返回返回多个返回值 | 同步调用返回多个值的弊端 | 尝试在 sequence 调用挂起函数返回多个返回值 | 协程调用挂起函数返回集合 )

文章目录 一、以异步返回返回多个返回值 二、同步调用返回多个值的弊端 三、尝试在 sequence 调用挂起函数返回多个返回值 四、协程调用挂起函数返回集合 一、以异步返回返回多个返回值 ----...| 协程的 suspend 挂起函数 ) 博客 ; 如果要 以异步的方式 返回多个元素的返回值 , 可以使用如下方案 : 集合 序列 Suspend 挂起函数 Flow 异步流 二、同步调用返回多个值的弊端..., 该函数就会变成 SequenceScope 的扩展函数 , SequenceScope 类的扩展函数是限制挂起的 , 只要是 SequenceScope , 如果要调用挂起函数 , 只能调用其已有的挂起函数..., : yield , yieldAll , 函数等 , 不能调用其它挂起函数 ; RestrictsSuspension 注解的作用是 限制挂起 ; /** * 当用作扩展挂起函数的接收器时,...---- 如果要 以异步方式 返回多个返回值 , 可以在协程调用挂起函数返回集合 , 但是该方案只能一次性返回多个返回值 , 不能持续不断的 先后 返回 多个 返回值 ; 代码示例 : package

8.2K30

『React Navigation 3x系列教程』createBottomTabNavigator开发指南

BottomTabNavigatorConfig(可选):配置导航器的路由(:默认首屏,navigationOptions,paths等)样式(,转场模式mode、头部模式等)。...tabBarVisible: 显示或隐藏TabBar,默认显示; tabBarIcon: 设置TabBar的图标; tabBarLabel: 设置TabBar的标签; tabBarOnPress: Tab被点击的回调函数...:React组件,它包装图标和标签并实现onPress。...navigation跳转到外层StackNavigator的页面的,这种应用场景很多,尤其是你需要定制TabNavigator的时候; 初始化传参:如何在设置页面的时候传递参数呢?...大家在学习使用React Navigation3x过程遇到任何问题都可以在React Navigation3x的视频教程寻找答案哈。

7.1K30

RN项目第二节 -- 首页实现

20 : 0) //iOS平台状态栏默认为0,安卓平台默认为20 } 二、首页封装 1) 首页导航的实现 同样也是在navigationOptions调用箭头函数。返回标题、图片。...boolean, } 在构造函数设置初始值,并绑定要实现的方法 constructor(props) { super(props) this.state =...这里做的是请求数据的操作,用fetch函数传入api得到全部的折扣数据结果。然后再转化为json数据,接着把json的data赋值给discounts数组。...在代码中用fetch将数据解析成json格式,取出data集合的数据传入箭头函数,一一赋值给指定变量之后返回给数组dataList。如此一来,就可以用setState方法改变数组的数据。...return ( //scrollView里面要包含多个Item。

6.5K30

『React Navigation 3x系列教程』之React Navigation 3x开发指南

你可以通过以上7种导航器来创建你APP,可以是其中一个也可以多个组合,这个可以根据具体的应用场景并结合每一个导航器的特性进行选择。...Screen Navigation Prop(屏幕的navigation Prop) 当导航器的屏幕被打开时,它会收到一个navigation prop,navigation prop是整个导航环节的关键一员...: const {navigation,theme,selectedTab}=this.props; const resetAction = StackActions.reset({ index...这些函数是 navigate 和 goBack 的替代方法, 你可以使用任何你喜欢的方法。...其中key表示你要返回到页面的页面标识id-1517035332238-4,不是routeName。 可以通过指定页面的navigation.state.key来获得页面的标识。

4.3K30

react-navigation导航器

导航器也可以看成是一个普通的React组件,你可以通过导航器来定义你的APP的导航结构。导航还可以渲染通用元素,例可以配置的标题栏和选项卡栏。 react-natvigation自开源以来。...补白 概念 在开始学习导航器之前,我们需要了了解两个和导航有关的概念: Screen navigation prop(屏幕导航属性):通过navigation可以完成屏幕之间的调度操作,例打开另一个屏幕...抽屉效果,侧边滑出 createSwitchNavigator:SwitchNavigator的用途是一次只显示⼀个⻚页⾯面 你可以通过以上几种导航器来创建你的APP,可以是其中一个,也可以多个组合...StackNavigatorConfig (可选):配置导航器器的路路由(:默认⾸首屏,navigationOptions,paths 等)样式(,转场模式mode、头部模式等)。...留意到以下模拟器, ?

6.3K20

基础篇章:关于 React Native 之 Modal 组件的讲解

(友情提示:RN学习,从最基础的开始,大家不要嫌弃太基础,会的同学请自行略过,希望不要耽误已经会的同学的宝贵时间) Modal是模态视图,它的作用是可以用来覆盖 React Native根视图的原生视图...注意:如果你需要如何在您的应用程序的其余部分呈现模态的更多控制,那么可以考虑使用顶级导航(top-level Navigator)。...PropTypes.func.isRequired : PropTypes.func 这是一个 Android 平台需要的属性,它的作用是当这个模态视图取消或者关闭消失的时候回调这个函数 onShow...function 当模态视图显示的时候调用函数 transparent bool 布尔值,是否透明,true 将使得在一个透明背景的模式 visible bool 布尔值,是否可见 onOrientationChange..._onUnhighlight} onPress={this.props.onPress} onShowUnderlay={this.

2.5K70

React Native导航器之react-navigation使用

Navigation 使用 在你使用navigation的每一个界面navigation都提供相关的属性和响应方法,常见的有: navigate 定义跳转到另一个页面 调用此方法去链接你的其他界面...·cardStyle- 使用该属性继承或者重载一个在stack的card的样式。 ·onTransitionStart- 一个函数,在换场动画开始的时候被激活。...·onTransitionEnd- 一个函数,在换场动画结束的时候被激活。 Navigation Options 你还可以定义一个静态的navigationOptions在你的组件之上。...this.state.user } react-navigation参数传递 对于 react-navigation参数的传递,使用上比较简单,只需要在navigate中加一个json格式的对象即可,:...{ static navigationOptions = { // Nav options can be defined as a function of the navigation prop

12K70

【React Native 安卓开发】----侧边栏的实现DrawerLayoutAndroid以及第三方框架react-native-side-menu的使用【第六篇】

无论抽屉处于那种状态,都仍然可以调用openDrawer/closeDrawer这两个方法打开和关闭。...onDrawerClose function 每当导航视图(抽屉)被关闭之后调用此回调函数。 onDrawerOpen function 每当导航视图(抽屉)被打开之后调用此回调函数。...onDrawerSlide function 每当导航视图(抽屉)产生交互的时候调用此回调函数。 onDrawerStateChanged function 每当抽屉的状态变化时调用此回调函数。...dragging(拖拽),表示用户正在与导航条进行交互。 settling(停靠),表示用户刚刚结束与导航条的交互,导航条正在结束打开或者关闭的动画。...styles.drawerStyle]}> <Text style={[styles.textStyle, styles.textLarge]} /** 当一个组件需要使用多个

6.6K40

『React Navigation 3x系列教程』createDrawerNavigator开发指南

DrawerNavigatorConfig(可选):配置导航器的路由(:默认首屏,navigationOptions,paths等)样式(,转场模式mode、头部模式等)。...以及navigationOptions; screen(必选):指定一个 React 组件作为屏幕的主要显示内容,当这个组件被DrawerNavigator加载时,它会被分配一个navigation prop...path(可选):用来设置支持schema跳转时使用,具体使用会在下文的有关Schema章节中讲到; navigationOptions(可选):用以配置全局的屏幕导航选项:title、headerRight...inactiveTintColor: 未选中item状态的文字颜色; inactiveBackgroundColor: 未选中item的背景色; onItemPress: 选中item的回调,这个参数属性为函数...React Navigation3x的视频教程寻找答案哈。

7K10

移动跨平台ReactNative存储数据组件AsyncStorage【13】

它不会生成原生 UI 组件,而是基于 React,React Native 是一个用于构建基于 Web 的交互界面的 JavaScript 库,因此会有更丰富的 UI 体验效果,同时也能够很好地调用底层框架的...multiSet() 将多个键值对存储到系统 multiRemove() 根据多个 key 删除多个键值对 clear() 清空整个数据库系统 每一个接口的详细信息,可以 官方 API 文档 使用示例...null) { // 之前存储的数据 } } catch(e) { // 读取数据失败 } } 最佳实战 数据可能不存在,推荐在 constructor() 构造函数先初始化一个默认值...推荐把读取数据的逻辑放到 componentDidMount() 。...范例 下面的代码演示了如何在存储数据组件 AsyncStorage 存储和读取数据。

3.1K10
领券