iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >我可以模拟一个带有需要使用的指针参数的函数吗
  • 924
分享到

我可以模拟一个带有需要使用的指针参数的函数吗

2024-04-05 00:04:53 924人浏览 泡泡鱼
摘要

你在学习golang相关的知识吗?本文《我可以模拟一个带有需要使用的指针参数的函数吗》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不

你在学习golang相关的知识吗?本文《我可以模拟一个带有需要使用的指针参数的函数吗》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

假设我们有一个库提供了一个函数 double 来将整数加倍,我们使用指针 i 来获取结果值而不是通过返回:

package api

type action interface {
    double(i *int) error
}

type num struct{}

func (n num) double(i *int) error {
    *i *= 2

    return nil
}

在我们的主函数中,我们使用这个库来完成我们的任务。像这样:

package app

import (
    "fmt"
    "GitHub.com/hotsnow/api"
)

func main() {
    j := job{a: &api.num{}}
    d := j.task(3)
    fmt.println(3, d)
}

type job struct {
    a api.action
}

// double me
func (j job) task(i int) int {
    j.a.double(&i)

    return i
}

现在我们需要测试task()函数,如何通过模拟double函数获得指针返回?

这是测试:

package app

import (
    "github.com/Golang/mock/gomock"
    "github.com/hotsnow/mocks"
    "testing"
)

func TestReq(t *testing.T) {
    ctrl := gomock.NewController(t)
    defer ctrl.Finish()

    m := mocks.NewMockAction(ctrl)
    m.EXPECT().Double(gomock.Any()).Return(nil)

    j := job{a: m}
    got := j.task(3)
    if got != 6 {
        t.Errorf("got = %#v; want 6", got)
    }
}

这里的代码:https://github.com/hotsnow/mock.git(stackoverflow分支)


解决方案


您可以使用 gomock setarg 函数来实现此目的

yourPackage.EXPECT().insert(&pointer).SetArg(0, newPointer)

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注编程网公众号,一起学习编程~

您可能感兴趣的文档:

--结束END--

本文标题: 我可以模拟一个带有需要使用的指针参数的函数吗

本文链接: https://www.lsjlt.com/news/596727.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作