2

Golang アプリケーション モデルでは

私は以下を持っています:

func AddClub(name string) int64 {
    o := orm.NewOrm()
    club := Club{Name: name}

    id, err := o.Insert(&club)
    if err != nil {
        fmt.Printf("Id: %s, Error: %s", id, err)
    }

    return id
}

次に以下。

func GetAllClubs() []*Club {
    o := orm.NewOrm()

    var clubs []*Club
    num, err := o.QueryTable("clubs").All(&clubs)
    if err != nil {
        fmt.Printf("Returned Rows Num: %s, %s", num, err)
    }
    return clubs
}

o := orm.NewOrm()インスタンス化の重複を取り除きたい。どうすればいいですか?

init()以下のように funcの一部として配置しようとしました:

func init() {
  o := orm.NewOrm()
}

しかし、コンソールに undefined o エラーが表示されます

4

1 に答える 1

1

パッケージ全体で使用できる変数を定義する場合は、パッケージ レベルで宣言する必要があります (注入しない場合)。つまり、関数の外側です。

これには省略形の:=初期化も使用できません。明示的でなければなりません。

したがって、次のようにする必要があります。

var o orm.Ormer

func init() {
    o = orm.NewOrm()
}

これは関数の外で宣言されており、省略形の初期化および代入演算子を使用していないことに注意してください:=

于 2015-01-12T10:52:45.530 に答える