go run: не может запускать не основной пакет
здесь простое приложение. Я получаю ошибку "go run: can not run non-main package", если я запускаю следующий код.
package zsdfsdf
import (
"fmt"
)
func Main() {
fmt.Println("sddddddd")
}
Чтобы исправить это, мне просто нужно назвать пакет main.but, я не понимаю, зачем мне это нужно. Я должен был бы назвать пакет, что захочу.
другой вопрос, я знаю, что главная функция - это точка входа в программу, она вам нужна. иначе это не сработает. но я вижу, что некоторые коды, которые не имеют основной функции, все еще работают.
нажмите на эту ссылку, в нижней части страницы не используется основная и основная функция пакета, и она по-прежнему работает. просто любопытно, почему.
https://developers.google.com/appengine/docs/go/gettingstarted/usingdatastore
Ответы
Ответ 1
Вам нужно указать в файле app.yaml, что такое точка доступа к вашему приложению. Взгляните сюда. Вам необходимо указать:
application: zsdfsdf
Также см. Ссылку выше:
"Примечание: при написании автономной программы Go мы поместили бы этот код в основную часть пакета. Runtime Go App Engine Runtime предоставляет специальный основной пакет, поэтому вы должны поместить код обработчика HTTP в пакет по вашему выбору (в этом случае привет ) ".
Вы правы, что всем программам Go нужен метод Main
. Но это обеспечивается Google App Engine. Вот почему ваш приведенный пример работает. Ваш пример не будет работать локально (не на GAE).
Ответ 2
Точкой входа каждой программы перехода является main.main
, то есть функция main в пакете main. Вы должны предоставить такой основной пакет.
Однако GAE является исключением. Они добавляют main
пакет, содержащий main
функцию автоматически в ваш проект. Поэтому вам не разрешено писать свои собственные.
Ответ 3
Вам нужно использовать основной пакет, общая ошибка, начинающаяся с go is type
package Main
вместо
package main