golang map 存储函数

实例:

package main

import (
    "runtime"
    "sync"
    "os"
    "os/signal"
    "syscall"
    "fmt"
)

//定义函数类型

type Msg func(name string) string

func main() {
    runtime.GOMAXPROCS(runtime.NumCPU())
    wg := &sync.WaitGroup{}
    c := make(chan os.Signal, 1)
    handleMap := make(map[int]Msg)
    handleMap[1] = handle1
    handleMap[2] = handle2
    handleMap[3] = handle3

    signal.Notify(c, os.Interrupt, syscall.SIGTERM, syscall.SIGQUIT)
    go func() {
        sig := <-c
        _ = sig
        s := handleMap[3]
        s("测试")
        wg.Done()
    }()
    wg.Add(1)
    fmt.Println("执行任务~~~")
    wg.Wait()
    fmt.Printf("结束")
}

func handle1(name string) string {
    fmt.Println(name)
    return "handle1"

}
func handle2(name string) string {
    fmt.Println("handle2")
    return "handle2"

}
func handle3(tt string) string {
    fmt.Println(tt)
    return "handle3"

}

执行结果:

执行任务~~~
测试
结束
Process finished with exit code 0

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Golang 中,可以使用指针来操作 map。当我们传递 map 作为参数时,实际上是传递了 map 的一个副本。如果需要修改原始 map,可以传递 map 的指针,或者在函数内部返回 map 的指针。 以下是一个使用 map 指针的示例代码: ```go package main import "fmt" func main() { m := make(map[string]int) m["a"] = 1 m["b"] = 2 // 传递 map 的指针 addValue(&m, "c", 3) fmt.Println(m) // 输出:map[a:1 b:2 c:3] // 返回 map 的指针 m2 := createMap() fmt.Println(m2) // 输出:map[x:10 y:20 z:30] } func addValue(m *map[string]int, key string, value int) { (*m)[key] = value } func createMap() *map[string]int { m := make(map[string]int) m["x"] = 10 m["y"] = 20 m["z"] = 30 return &m } ``` 在上面的示例中,我们定义了两个函数,`addValue` 和 `createMap`,分别演示了如何传递 map 的指针和返回 map 的指针。在 `addValue` 函数中,我们使用 `*` 操作符来获取 map 的指针,并修改了原始的 map。在 `createMap` 函数中,我们使用 `&` 操作符来返回 map 的指针。 ### 回答2: 在Go语言中,map是一种无序的键值对集合,可以用于存储和检索数据。默认情况下,map是通过值传递的,即将map赋值给另一个变量时,会复制一份map的副本。但我们也可以使用指针来操作map,从而可以在函数间共享和修改同一个map。 使用指针来操作map有两种常见的方式。一种是直接声明一个指向map的指针变量,然后通过间接引用来操作map。例如: ```go var m *map[string]int // 声明指向map的指针变量 m = &map[string]int{} // 创建一个空的map,并将其地址赋值给指针变量 (*m)["key"] = 123 // 通过指针间接引用map,并修改其值 ``` 另一种方式是使用make函数创建一个map,并将其指针传递给函数。例如: ```go func modifyMap(m *map[string]int) { (*m)["key"] = 123 // 通过指针间接引用map,并修改其值 } func main() { m := make(map[string]int) // 创建一个map modifyMap(&m) // 将map的指针传递给函数 } ``` 需要注意的是,在使用指针操作map时,要确保map已经被初始化。否则,会发生运行时错误。另外,由于map本身就是引用类型,因此大部分情况下,直接使用map而不是指针就可以满足需求,而且更加简单和安全。只有在需要在函数间传递和修改同一个map时,才需要使用指针来操作map。 ### 回答3: Golang中的map是一种无序的键值对集合,而map指针则是指向map的内存地址的指针。 在使用map时,可以通过var关键字声明一个map变量,并使用make函数来初始化该map。而如果需要使用map指针,可以通过将map变量的地址赋值给指针变量来实现。 下面是一个示例代码: ``` package main import "fmt" func main() { // 声明并初始化map myMap := make(map[string]int) myMap["apple"] = 2 myMap["banana"] = 3 // 声明并初始化map指针 var myMapPtr *map[string]int myMapPtr = &myMap // 使用map指针修改map (*myMapPtr)["apple"] = 5 // 输出修改后的值 fmt.Println(myMap["apple"]) } ``` 在上述代码中,首先使用make函数初始化了一个map变量myMap,并给其中的键"apple"和"banana"分别赋值。然后,使用var关键字声明了一个map指针myMapPtr,并将myMymap的地址赋值给了myMapPtr。接下来,使用map指针修改了map中键"apple"的值为5。最后,输出了map中键"apple"的值,结果为5。 总结来说,Golangmap指针允许我们通过指针来修改和访问map的值,更灵活地操作Map的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值