iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >函数中输入参数的可变类型
  • 312
分享到

函数中输入参数的可变类型

2024-02-09 20:02:55 312人浏览 安东尼
摘要

PHP小编苹果为您介绍函数中输入参数的可变类型。在php中,函数的参数类型可以是固定的,也可以是可变的。可变类型参数,指的是函数可以接受不同类型的参数作为输入,这在处理不同场景下的数据

PHP小编苹果为您介绍函数中输入参数的可变类型。在php中,函数的参数类型可以是固定的,也可以是可变的。可变类型参数,指的是函数可以接受不同类型的参数作为输入,这在处理不同场景下的数据非常有用。通过使用特殊的参数标识符,比如“...”,我们可以在函数定义中声明可变类型参数。这使得我们能够更加灵活地处理各种不同类型的数据,提高代码的复用性和可读性。无论是字符串、数字、数组或是其他类型,我们都可以轻松地将它们作为参数传递给函数,并在函数内部进行相应的处理。这种灵活的参数类型处理方式,让我们的代码更加健壮和适应性强,能够应对各种复杂的业务需求。

问题内容

我创建了一个函数来获取用户对拉取请求的最后评论。我正在使用“GitHub.com/Google/go-github/github”包。我想将它用于 []*github.issuecomment 和 []*github.pullrequestcomment 类型。有没有办法使输入参数的类型可变,这样我就不必在函数定义中指定它,并且可以使用任一类型调用函数?

func getlastuserinteractionpr(comments_array *github.issuecomment or *github.pullrequestcomment)(*github.issuecomment or *github.pullrequestcomment) {
}

泛型的使用:

func getlastuserinteractionpr(comments_array any)(any) {
}

这是一个紧急解决方案,因为我正在做的整个项目都是用 go 1.14 编写的,并且这个功能可以从 go 1.18 中获得

当我尝试使用空接口{}作为输入类型时:

func getLastUserInteractionPRIssue(comments_array interface{})(*github.IssueComment) {

comments_array []*github.IssueComment(comments_array); err {
fmt.Println("success")
    } else {
        fmt.Println("failure")
    }
}

解决方法

你关心例如的内部结构吗? issuecomment

type issuecomment struct {
    id        *int64     `JSON:"id,omitempty"`
    nodeid    *string    `json:"node_id,omitempty"`
    body      *string    `json:"body,omitempty"`
    user      *user      `json:"user,omitempty"`
    Reactions *reactions `json:"reactions,omitempty"`
    createdat *time.time `json:"created_at,omitempty"`
    updatedat *time.time `json:"updated_at,omitempty"`
    // authorassociation is the comment author's relationship to the issue's repository.
    // possible values are "collaborator", "contributor", "first_timer", "first_time_contributor", "member", "owner", or "none".
    authorassociation *string `json:"author_association,omitempty"`
    url               *string `json:"url,omitempty"`
    htmlurl           *string `json:"html_url,omitempty"`
    issueurl          *string `json:"issue_url,omitempty"`
}

例如,您关心从中提取某些特定字段吗? pullrequestcomment 是一个更大的结构(它有更多字段),您关心从中提取一些字段吗?

或者您只想要每个的字符串表示形式?您要做什么很大程度上取决于您想如何处理传递的值。

如果您只想要每个 string 表示,您可以使用极端(老实说,不是很安全 - 我不推荐这个)示例,让您的函数接受 fmt.stringer 对象的切片:

func dostuffwithstringifiedcomments(cs []fmt.stringer) {
  // both issuecomment and pullrequestcomment provide string()
  // methods and therefore implement fmt.stringer
  for _, comment := range cs {
    dosomethingwith(comment.string())
  }
}

您的切片现在可以包含任一类型的对象,并且不会发生任何爆炸。缺点:它还可能包含数以亿计的其他类型,但没有一个是您想要的。因此,您需要添加类型断言检查:

switch t := comment.(type) {
  case github.issuecomment:
    // do good stuff
  case github.pullrequestcomment:
    // do other good stuff
  default:
    // yell and scream about the value of t
}

如果您想要提取某些字段,则必须组合一个采用 []interface{} 之类的函数(使其成为空接口的一部分,而不是空接口代表切片),迭代它并对切片的每个元素进行类型检查,并提取任何有意义的字段,只要该元素属于您期望的类型即可:

func DoStuff(comments []interface{}) error {
  for _, c : = range comments {
    if ic, ok := c.(*github.IssueComment); ok { // Remove the deref if your slice contains values, not references
      // Pull out fields and do IssueComment-specific things
      ProcessIssueComment(ic)
    } else if prc, ok := c.(*github.PullRequestComment); ok {
      // Do PRComment-specific things
      ProcessPullRequestComment(prc)
    } else {
      return(fmt.Errorf("I did not want something of type %s", t))
    }
  }
  return nil
}

另外:游说项目所有者(如果不是您)迁移到当前版本的 go。 1.14 到 2020 年才发布,但这对于 go 版本来说已经是永恒的了。

以上就是函数中输入参数的可变类型的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 函数中输入参数的可变类型

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

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

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

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

下载Word文档
猜你喜欢
  • 函数中输入参数的可变类型
    php小编苹果为您介绍函数中输入参数的可变类型。在php中,函数的参数类型可以是固定的,也可以是可变的。可变类型参数,指的是函数可以接受不同类型的参数作为输入,这在处理不同场景下的数据...
    99+
    2024-02-09
  • PHP8.0中可变类型的参数
    随着 PHP 8.0 的发布,我们看到了很多有趣而且有用的特性,其中之一是可变类型参数。这个特性使函数的参数能够接受多种类型的值,无论是字符串、数组还是对象。现在我们来看一下这个新特性的具体用法和它可能产生的影响。可变类型参数的定义所谓可变...
    99+
    2023-05-14
    参数 PHP 可变类型
  • 泛型函数在Golang中解决可变参数类型的问题吗?
    go 中的泛型函数解决了可变参数类型的问题:泛型函数允许使用类型参数,在运行时指定。这使得编写可以处理不同类型参数的函数成为可能。例如,max 函数是一个泛型函数,它接受两个可比较参数并...
    99+
    2024-04-16
    golang 泛型
  • golang中的可变参数函数
    问题内容 package main import ( "fmt" ) type isum interface { sum() int } type sumimpl...
    99+
    2024-02-12
    go语言
  • PHP 函数参数类型的可用资源
    php 函数参数类型包括:整型、字符串、浮点数、布尔值、数组、对象、资源和 null;复合类型包括闭包。 PHP 函数参数类型的可用资源 在 PHP 中,函数参数可以具有不同的类型,包...
    99+
    2024-04-19
    php 参数类型
  • python函数的默认参数为什么不可以定义可变类型
    这篇文章主要介绍“python函数的默认参数为什么不可以定义可变类型”,在日常操作中,相信很多人在python函数的默认参数为什么不可以定义可变类型问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python函...
    99+
    2023-06-29
  • Python中的函数参数(位置参数、默认参数、可变参数)
    目录一、位置参数二、默认参数三、可变参数四、关键字参数五、命名关键字参数六、各种参数之间的组合函数的参数:Python中函数定义非常简单,由于函数参数的存在,使函数变得非常灵活应用广...
    99+
    2024-04-02
  • python函数的默认参数请勿定义可变类型详解
    目录函数的默认参数请勿定义可变类型可变类型和不可变类型定义可变类型会有什么问题?导致的原因解决方法关于可变类型作为默认参数时的注意点测试:将可变类型列表换为字典测试:来个不可变类型字...
    99+
    2024-04-02
  • C++ 函数默认参数和可变参数在泛型编程中的作用
    c++++ 中的默认参数和可变参数在泛型编程中发挥着至关重要的作用:默认参数允许函数在调用时指定可选参数,便于处理不同类型和默认值的元素。可变参数允许函数接受任意数量的参数,便于处理可变...
    99+
    2024-04-22
    c++ 泛型编程 键值对
  • 深入研究Python函数可变参数的机制
    深入探讨Python函数的可变参数机制 引言:Python是一种功能强大且易于使用的编程语言,它提供了很多便利功能来提高开发效率,其中之一就是可变参数机制。在Python中,函数可以接受不同数量的参数,这种灵活性为程序员提供了更...
    99+
    2024-02-03
    可变参数 python函数 深入探讨
  • golang可变参数是否可以用于泛型函数?
    在 go 中,变参可以用于泛型函数,允许创建可接受可变数量参数且适用于多种类型的泛型函数。例如,您可以创建泛型函数 mode,它查找给定列表中出现次数最多的元素:mode 接受可变数量的...
    99+
    2024-04-29
    可变参数 泛型 golang
  • 可变、不可变数据类型
    可变数据类型:在id不变的情况下,value可改变(列表和字典是可变类型,但是字典中的key值必须是不可变类型)   不可变数据类型:value改变,id也跟着改变。(数字,字符串,布尔类型,都是不可类型) 字符串也可以像列表一样通过...
    99+
    2023-01-30
    数据类型
  • Python中的函数参数类型检查
    目录Python函数参数类型检查下面我们用装饰器来实现总结Python函数参数类型检查 有一个很经典的笑话: 三个月之前,只有我和上帝知道这代码是干什么的。 现在,只有上帝知道了。 ...
    99+
    2022-12-19
    Python函数 函数参数类型检查 Python函数参数
  • golang可变参数的语法和类型要求?
    go语言中的可变参数语法为 funcname(param1, param2, ..., paramn ...type),其中 param1 至 paramn 是固定参数,type 是可变...
    99+
    2024-04-30
    golang 可变参数 go语言
  • Python中函数的参数类型详解
    目录1、Python的函数参数的类型2、Python的必传参数3、关键字参数4、默认参数5、不定长参数1、Python的函数参数的类型 必传参数:调用函数时必须传入的参数,函数定义时...
    99+
    2024-04-02
  • PHP 函数参数类型的演变历史是怎样的?
    php 函数参数类型历史演变:php 4 之前:松散类型,无类型提示或强制执行。php 4:引入类型提示,但仅作为注释。php 5:增强了类型提示,引入了严格模式,但仍然支持松散类型。p...
    99+
    2024-04-10
    php 函数参数类型
  • python数据类型可变与不可变深入分析
    目录一.可变类型与不可变类型的特点1.不可变数据类型2.可变数据类型二.哪些是可变类型哪些是不可变类型一.可变类型与不可变类型的特点 1.不可变数据类型 不可变数据类型在第一次声明赋...
    99+
    2024-04-02
  • golang函数可变参数传递
    go 语言函数可变参数传递允许函数接受任意数量的参数,通过省略号 ... 标记,并以切片类型传递给函数。实际应用中,可变参数常用于处理不定数量输入,如计算数字序列平均值。使用时需要注意可...
    99+
    2024-04-22
    golang函数 可变参数 golang
  • PHP 函数参数类型的演变历史是怎样的?
    php 函数参数类型历史演变:php 4 之前:松散类型,无类型提示或强制执行。php 4:引入类型提示,但仅作为注释。php 5:增强了类型提示,引入了严格模式,但仍然支持松散类型。p...
    99+
    2024-04-10
    php 函数参数类型
  • golang可变参数是否可以用于接口类型?
    go语言中,可变参数不能直接应用于接口类型。解决方法是使用类型断言,将接口类型断言为特定的接口类型,然后使用可变参数语法。例如,定义一个printer接口,实现两个结构体consolep...
    99+
    2024-04-30
    golang 接口类型 go语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作