如何将指针的值从map传递给函数参数

时间:2018-06-11 12:09:12

标签: go

所以我的用例是这样的:

1。生成指向结构(汽车)指针的地图

2。变异地图

3。迭代map并传递给函数

type Car struct {
    Model string
    Size  int
}

func getSize(car Car) {
    fmt.Println(car.Size)
}

func main() {
    cars := make(map[string]*Car)
    // fill cars with stuff
    cars["Toyota"] = &Car{
        Model: "Toyota",
        Size:  2,
    }

    for _, car := range cars {
        cars["Toyota"].Size = 4
    }

    for _, car := range cars {
        //somehow get the value of car and insert into function
        getSize(car)
    }
}

但是我不知道如何将指针的值从地图传递给函数,因为地图不允许你对指针进行寻址。

有什么方法可以更好地解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您可以在调用期间取消引用汽车地图值,这将使用汽车指针指向的值调用该函数:

getSize(*car)

如果您没有收到编译错误:

  

prog.go:31:16:在参数中不能使用汽车(类型*汽车)作为汽车类型   的getSize

package main

import (
    "fmt"
)


type Car struct {
    Model string
    Size  int
}

func getSize(car Car) {
    fmt.Println(car.Size)
}

func main() {
    cars := make(map[string]*Car)
    // fill cars with stuff
    cars["Toyota"] = &Car{
        Model: "Toyota",
        Size:  2,
    }


    cars["Toyota"].Size = 4


    for _, car := range cars {
        //somehow get the value of car and insert into function
        getSize(car)
    }
}