golangでサブパッケージからメインパッケージのファンクションを呼ぶ

C++とかJavaなら簡単なのに!

ドハマりしました。
それとなく質問を投げていたものの回答は無く…。

golangも簡単だった。

ただ、C++とかJavaみたいにクラスの参照投げて動かすのではなくてファンクションごとに投げてコールバック出来るようにするといった感じ。

例。

ディレクトリ構造。
./
├── sub
│   └── sub.go
└── test.go
test.go
package main

import (
    "fmt"
    "./sub"
)

func main() {
    sub.Call(Sub)
}

func Sub(){
    fmt.Print("hi i'm main,call from sub\n")
}
sub.go
package sub

func Call(fn func()) {

    for i:=0 ; i<10 ; i++ {
        fn()
    }
}

相対パスいけないんだーとかいうツッコミはここでは無しで。面倒くさいんだもん。

でまあ、mainパッケージからsubパッケージにあるCallファンクションに呼び出してほしいmainパッケージ内のファンクションを引数として呼び出すとsubパッケージは引数として渡されたファンクションを10回ほど呼び出して終わるというプログラムになってます。

どういうときに使いたいのかコレ。

要するに共通処理が大量にあって毎回書きたくないようなものをサブパッケージにまとめておいて、mainパッケージにはロジックだけ書きたいっていう場合に役立つはずです。ゲームのフレームワークとかね。

C++やJavaみたいな手軽さはないけど、まあ。一応出来るのは解ったのでよかった。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.