@Salim_Gareev

Вызвать функцию имея название функции в строке?

Добрый день.
Как можно вызвать функцию зная название функции? Т.е. в строковой переменной находится название этой функции. Возможно ли это?
func f(){
fmt.Println("функция вызвана")
}

func main(){
str = "f"
вызвать_функцию(str)
}
  • Вопрос задан
  • 330 просмотров
Решения вопроса 1
@PapaStifflera
Родился, вырос...
Пригласить эксперта
Ответы на вопрос 2
@chromimon
Можно только через попу это организовать. Папа Стифлера в соседнем ответе показал как. Большое количество рефлексии в коде примера и показывает, что это неправильный путь. Только как крайняя мера.

А вот непротиворечащая идеологии Go вещь - это будет с явным указанием типов:
package main

import (
	"fmt"
)

func add(a, b int) int {
	return a + b
}

func sub(a, b int) int {
	return a - b
}

func main() {

	table:= make(map[string]func(int,int)int)
	
	table["func1"] = add
	table["func2"] = sub
	
	fmt.Println(table["func1"](5, 3))
	fmt.Println(table["func2"](5, 3))
}


Кода значительно меньше, типы - жестко определены.
Ответ написан
@KirEv
по моему, когда в подобных языках пытаются вызвать функцию неявно - что-то нетак с архитектурой программы.

интересно увидеть полную картину, для чего это.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы