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