Как создать экземпляры типов функций в golang? - PullRequest
0 голосов
/ 21 октября 2018

Я хотел бы создать несколько функций одного типа без дублирования их подписи.У меня уже есть тип функции, описывающий эту сигнатуру (fancyFunc ниже) и другая функция, использующая аргументы такого рода (doFancyStuff ниже).Как бы я сделал что-то вроде этой работы?

package main

import "fmt"

type fancyFunc func(a,b,c int) int

func doFancyStuff(f FancyFunc) int {
    // Do something special with f
    return 42
}

func main() {
    // This works but is rather tedious:
    f1 := func(a,b,c int) int { return a + b + c }

    // I would like to create them like this:
    f2 := fancyFunc{ return a * b * c }

    // Eventually, they are used like this:
    fmt.Println(doFancyStuff(f1))
    fmt.Println(doFancyStuff(f2))
}

1 Ответ

0 голосов
/ 21 октября 2018

Вы можете сделать это только в случае f1 или путем определения нормальной функции.нет ничего похожего на f2 способ.В Си люди делают это с помощью макросов, но у Go нет препроцессора (есть несколько неофициальных, которые вы можете использовать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...