返回顶部
首页 > 资讯 > 后端开发 > GO >映射中的多种函数类型,Golang
  • 104
分享到

映射中的多种函数类型,Golang

golang开发 2024-02-12 09:02:57 104人浏览 八月长安
摘要

映射是golang中一种强大的数据结构,它允许我们将一个值与另一个值相关联。在Golang中,我们可以使用映射来实现各种不同类型的函数。PHP小编柚子将在本文中介绍映射中的多种函数类型

映射是golang中一种强大的数据结构,它允许我们将一个值与另一个值相关联。在Golang中,我们可以使用映射来实现各种不同类型的函数。PHP小编柚子将在本文中介绍映射中的多种函数类型,包括普通函数、匿名函数和方法。不仅如此,我们还将探讨如何在映射中使用函数作为值,并展示它们的强大功能和灵活性。无论您是初学者还是有经验的Golang开发者,本文都会为您提供有用的知识和实例来帮助您更好地理解和应用映射中的函数类型。让我们开始探索吧!

问题内容

我希望将用户输入连接到函数。用户输入是字符串。例如, "func_name=MyPrintf&s1=你好,世界\!" 或者 "func_name=MyAdd&i1=1&i2=2"

每个函数的代码是,

func MyPrintf(s1 string) {
    fmt.Println(s1)
}

func MyAdd(i1, i2 int) {
    fmt.Println(i1, i2)
}

我想要一张如下所示的地图,

type Myfunc func(string) | func(int, int)   // <- Of course, it's wrong code, just I hope like this.

myMap := make(map[string]Myfunc)

myMap["MyPrintf"] = MyPrintf
myMap["MyAdd"] = MyAdd

myMap 可以通过用户输入的 func_name 字符串调用函数。

myMap[func_name](s1) 输出:你好,世界! myMap[func_name](i1, i2) 输出:3

这可能吗? 也许我认为使用“eval”是可能的,但我听说使用“eval”不好。所以,我想到使用函数指针,但是Golang中没有函数指针。

我尝试了一些 Golang 通用编程

type Myfunc interface {
    func(string) | func(int, int)
}

myMap := make(map[string]Myfunc)

输出:发生错误:无法在类型约束之外使用类型 Myfunc:接口包含类型约束

再次尝试,

myMap := make(map[string]interface{})

myMap["MyPrintf"] = interface{}(MyPrintf)
myMap["MyPrintf"].(func(string))("Hello, world!")

输出:你好,世界!

myMap["MyAdd"] = interface{}(MyAdd)
myMap["MyAdd"].(func(int,int))(1, 2)

输出:3

它可以工作,但必须指定正确的函数类型,这不太舒服。我认为这种方式不适合我的场景。请给我帮助。 我为我糟糕的英语写作感到抱歉。

解决方法

你可以试试这个:

我必须说这不是一个好的做法,因为错误类型导致的恐慌\错误没有得到验证。我会考虑另一种方法。

package main

import "fmt"

type GeneralFunc func(args ...interface{})

func main() {
    // Create a map of functions with the type GeneralFunc
    functionsMap := map[string]GeneralFunc{
        "MyPrintf": func(args ...interface{}) { fmt.Println(args[0].(string)) },
        "MyAdd":    func(args ...interface{}) { fmt.Println(args[0].(int), args[1].(int)) },
    }

    // Use the functions from the map
    functionsMap["MyPrintf"]("Hello World")
    functionsMap["MyAdd"](2, 3)
}

以上就是映射中的多种函数类型,Golang的详细内容,更多请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: 映射中的多种函数类型,Golang

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

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

猜你喜欢
  • 映射中的多种函数类型,Golang
    映射是Golang中一种强大的数据结构,它允许我们将一个值与另一个值相关联。在Golang中,我们可以使用映射来实现各种不同类型的函数。php小编柚子将在本文中介绍映射中的多种函数类型...
    99+
    2024-02-12
    golang开发
  • 如何使 golang 中的 unmarshall 函数处理多种类型?
    小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《如何使 golang 中的 unmarshall 函数处理多种类型?》,就很适合你,本篇文章讲解的知识点主要包括。在之后...
    99+
    2024-04-04
  • PHP PDO 数据类型映射:让你的数据类型化
    什么是 PDO 数据类型映射? PDO(PHP 数据对象)提供了一个抽象层,可简化与不同数据库的交互。PDO 数据类型映射使我们能够将数据库字段类型映射到 PHP 数据类型。这提供了一致、类型化的和安全的数据库交互体验。 为什么要使用 ...
    99+
    2024-02-17
    PDO PHP 数据类型 映射 数据库
  • Hibernate中有哪些映射类型
    Hibernate中有哪些映射类型,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.Hibernate内置映射类型1).Java基本类型的Hibernate映射类型Java类型...
    99+
    2023-06-17
  • golang函数映射作为参数传递
    在 go 中,函数映射可作为函数的参数传递,提供代码重用和定制功能:创建函数映射:使用 map[string]interface{} 类型,将函数名称作为键,函数本身作为值存储。作为参数...
    99+
    2024-04-22
    参数传递 函数映射 golang
  • 深入了解TypeScript中的映射类型
    目录1. 基本概念(1)索引访问类型(2)索引签名(3)联合类型(4)keyof 类型运算符(5)元组类型(6)条件类型2. 映射类型(1)初体验(2)概念(3)实例3. 实用程序中...
    99+
    2022-11-13
    TypeScript映射类型 TypeScript映射
  • 如何在golang中将多种类型定义为一种类型
    在golang中,有时我们需要将多种类型定义为一种类型,以便更灵活地处理数据。对于这个问题,php小编新一为大家带来了解决方案。通过使用接口类型(interface),我们可以实现将多...
    99+
    2024-02-09
  • Golang函数参数传递中切片和映射的处理
    在 go 中函数参数传递时,切片和映射会传递引用,而不是值。切片在函数中修改会影响调用函数中的切片。映射在函数中修改也会影响调用函数中的映射。若需要传递副本,可以使用 copy 函数。多...
    99+
    2024-04-13
    映射 切片 golang
  • Python映射类型中dict怎么用
    这篇文章给大家分享的是有关Python映射类型中dict怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。映射类型 - dict字典可用多种方式来创建:使用花括号内以逗号分隔键: 值对的方式: {&ls...
    99+
    2023-06-29
  • TypeScript 映射类型是怎样的
    这期内容当中小编将会给大家带来有关TypeScript 映射类型是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:TypeScript 的官方文档早已更新,但我能找到的中文文档都还停留...
    99+
    2023-06-22
  • golang 函数类型转换和反射在测试中的使用
    在 go 测试中,函数类型转换和反射可用于创建更灵活和可维护的测试用例。函数类型转换允许将一种类型的函数转换为另一种类型,而反射允许检查和操纵类型和值。实战案例中,它们可用于编写模拟函数...
    99+
    2024-05-01
    测试 golang
  • 使用golang中的sync.Map函数实现并发安全的映射
    标题:使用golang中的sync.Map函数实现并发安全的映射引言:在并发编程中,多个goroutine同时对同一个数据结构进行读写操作,会造成数据竞争和不一致的问题。为了解决这个问题,Go语言提供了sync包中的Map类型,它是并发安全...
    99+
    2023-11-18
    Golang 并发安全 syncMap
  • golang 函数类型转换和反射在大型项目中的有效使用
    类型转换和反射在大型 go 项目中至关重要,允许处理多种数据类型和系统交互。类型转换:允许将一种类型的值转换为另一种类型,使用 type assertion 或 type convers...
    99+
    2024-05-03
    golang 反射 类型转换
  • UniDAC使用教程(四):数据类型映射
    下载UniDAC最新版本Universal Data Access Components (UniDAC)是一款通用数据库访问组件,提供了多个数据库的直接访问,如针对Windows的Delphi, C++B...
    99+
    2024-04-02
  • Elasticsearch映射字段数据类型及管理
    目录Elasticsearch映射管理一 映射介绍1.1 字段数据类型1.2 映射参数二 创建索引三 查看索引Elasticsearch映射管理 在Elasticsearch 6.0...
    99+
    2024-04-02
  • Go语言中的映射类型如何使用?
    Go语言中的映射类型如何使用? 在Go语言中,映射(map)是一种内置的数据结构,用于存储键值对。映射允许通过键来快速检索值,类似于其他语言中的字典或哈希表。在本文中,我们将介绍Go语...
    99+
    2024-04-02
  • golang函数的类型转换
    函数中类型转换允许将一种类型的数据转换为另一种类型,从而扩展函数的功能。使用语法:type_name := variable.(type)。例如,可使用 strconv.atoi 函数将...
    99+
    2024-04-19
    golang 类型转换 隐式类型转换
  • JPA之映射mysql text类型的问题
    目录JPA之映射mysql text类型问题背景解决方案JPA各种类型映射处理JPA之映射mysql text类型 问题背景 jpa如果直接映射mysql的text/longtext...
    99+
    2024-04-02
  • golang函数的反射
    go 中的函数反射提供了获取和操作函数信息并动态调用的能力。通过 reflect.valueof 可获得函数反射对象,包含其签名、参数和返回值信息。要动态调用,可构建参数反射值列表,并通...
    99+
    2024-04-21
    golang 反射
  • 如何理解 Golang 中函数类型的高阶函数?
    golang 高阶函数可接受和返回函数。它们分两类:接收函数作为参数:处理其他函数或执行动态程序。返回函数作为返回值:创建和返回可存储和后期执行的函数。 理解 Golang 高阶函数 ...
    99+
    2024-04-20
    函数类型 高阶函数 golang
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作