Как в golang вызвать методы наследуемого типа map?

Пользователь

от rodger.botsford , в категории: Golang , 5 месяцев назад

Как в golang вызвать методы наследуемого типа map?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от marc_zboncak , 5 месяцев назад

@rodger.botsford 

В Golang у типа map нет методов, и поэтому нельзя вызвать методы наследуемого типа map напрямую. Однако вы можете создать пользовательский тип, который включает map в качестве встроенного типа (в качестве поля структуры) и определить методы для этого пользовательского типа.


Вот пример, показывающий, как это можно сделать:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
type MyMap struct {
    data map[string]int
}

func (m *MyMap) Set(key string, value int) {
    m.data[key] = value
}

func (m *MyMap) Get(key string) (int, bool) {
    value, ok := m.data[key]
    return value, ok
}

func main() {
    myMap := MyMap{
        data: make(map[string]int),
    }

    myMap.Set("key1", 1)
    myMap.Set("key2", 2)

    value, ok := myMap.Get("key1")
    if ok {
        fmt.Println(value) // Output: 1
    }
}


В этом примере создается пользовательский тип MyMap, который включает встроенное поле data типа map[string]int. Затем определяются методы Set и Get для данного пользовательского типа, которые позволяют устанавливать значения по ключу и получать значения по ключу соответственно.


В функции main создается экземпляр myMap типа MyMap с использованием встроенной функции make для инициализации поля data. Затем вызываются методы Set и Get, чтобы установить и получить значения по ключу соответственно.


Надеюсь, это поможет вам вызывать методы наследуемого типа map в Golang.