web-dev-qa-db-ja.com

実行:メイン以外のパッケージを実行できません

ここにシンプルなgoアプリケーションがあります。次のコードを実行すると、「実行:メイン以外のパッケージを実行できません」というエラーが表示されます。

package zsdfsdf

import (
    "fmt"
)

func Main() {
    fmt.Println("sddddddd")
}

修正するには、パッケージにmain。という名前を付けるだけでよいのですが、なぜそうする必要があるのか​​わかりません。パッケージには、好きな名前を付けることができます。

別の質問、主な機能はプログラムのエントリポイントであることを知っています、あなたはそれを必要とします。それ以外の場合は機能しません。しかし、私はメイン機能を持っていなかったいくつかのコードがまだ動作しているのを見ます。

このリンクをクリックしてください。ページの下部にある例では、パッケージのメインとメイン関数を使用していませんでしたが、引き続き機能します。好奇心が強い理由。

https://developers.google.com/appengine/docs/go/gettingstarted/usingdatastore

39
qinking126

App.yamlファイルで、アプリのアクセスポイントを指定する必要があります。 こちら をご覧ください。以下を指定する必要があります。

application: zsdfsdf

上記のリンクからもご覧ください:

「注:スタンドアロンのGoプログラムを作成する場合、このコードをパッケージmainに配置します。GoApp Engineランタイムは特別なメインパッケージを提供するため、HTTPハンドラーコードを任意のパッケージに配置する必要があります(この場合、hello )。」

すべてのGoプログラムにMainメソッドが必要であることは正しいです。ただし、Google App Engineによって提供されます。これが、提供された例が機能する理由です。例はローカルでは機能しません(GAEでは機能しません)。

8
Sam P

各goプログラムのエントリポイントはmain.main、つまりmainというパッケージ内のmainという関数。このようなメインパッケージを提供する必要があります。

ただし、GAEは例外です。 main関数を含むmainパッケージをプロジェクトに自動的に追加します。したがって、独自の記述は許可されていません。

28
tux21b

メインパッケージを使用する必要があります。goで始まる一般的なエラーはtypeです

package Main

代わりに

package main
12
Pablo Cegarra

このエラーを回避する解決策は、エントリポイントsomefilename.goファイルをメインパッケージとして追加してpackage mainエントリポピンの最初の行として

package main

// import statements 
import "fmt"

// code below
1