2016-10-04 3 views
1

タイプとしてコールバックと機能を使用して、ルート方法:この例では移動中、私はエクスプレス(NodeJS)に類似している機能の並べ替えを作成しようとしています行く

app.get("route/here/", func(req, res){ 
    res.DoStuff() 
});  

私は「foo」をしたいです(型)を上記のメソッドの無名関数と同じにする必要があります。 Goを使用して失敗した試みの1つは次のとおりです。

type foo func(string, string) 

func bar(route string, io foo) { 
     log.Printf("I am inside of bar") 
     // run io, maybe io() or io(param, param)? 
} 

func main() { 
     bar("Hello", func(arg1, arg2) { 
       return arg + arg2 
     }) 
} 

ジレンマを修正するにはどうすればよいですか?私は型を使用して何か他のものを使うべきではありませんか?私の選択肢は何ですか?

+0

サイドノートではなく、おそらく関連:

は、あなたはそれをコンパイルするためにビットあなたに例を変更する必要がありますExpressにはhttps://echo.labstack.comです。 – syllabix

+0

@syllabix私はエコーのコピーを作成しようとしています:) – adamSiwiec

答えて

6

あなたは適切な方向に向いています。使用しているコンテキストにfuncのタイプを作成すると、より明確な設計意図とより重要な追加のタイプ安全性が追加されます。おなじみかもしれない一般的な構文とミドルウェアのパターンを使用してクールな囲碁のWebフレームワークの面で -

package main 

import "log" 

//the return type of the func is part of its overall type definition - specify string as it's return type to comply with example you have above 
type foo func(string, string) string 

func bar(route string, io foo) { 

    log.Printf("I am inside of bar") 
    response := io("param", "param") 
    log.Println(response) 

} 

func main() { 

    bar("Hello", func(arg1, arg2 string) string { 
     return arg1 + arg2 
    }) 

} 
関連する問題