Моя проблема
Приношу свои извинения, если проблема тривиальна - я новичок в golang и хочу понять механизм импорта. Я использую OSX, и простые программы go компилируются и хорошо работают.
Я создал сервер golang с помощью автоматического генератора кода в редактор чванства. Я распаковал код в какой-то каталог в /tmp/
, и полученный сервер содержит следующий main.go
файл:
package main
import (
// WARNING!
// Change this to a fully-qualified import path
// once you place this file into your project.
// For example,
//
// sw "github.com/myname/myrepo/go"
//
sw "./go"
"log"
"net/http"
)
func main() {
log.Printf("Server started")
router := sw.NewRouter()
log.Fatal(http.ListenAndServe(":8080", router))
}
Как и ожидалось из комментариев, go build main.go
завершается со следующей ошибкой:
main.go:11:2:
go/default.go:3:1: expected 'IDENT', found 'import'
Криминалистика
Дерево каталогов проекта
/tmp/goserver/go-server-server
├── LICENSE
├── api
│ └── swagger.yaml
├── go
│ ├── README.md
│ ├── app.yaml
│ ├── default.go
│ ├── logger.go
│ └── routers.go
└── main.go
go/default.go
package
import (
"net/http"
)
type Default struct {
}
func QuestionimagePost(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
w.WriteHeader(http.StatusOK)
}
Что я пробовал
- Прочтите о пакетах go
- Пытался понять отношения пакет / импорт в некоторых проектах github
- Дерево каталогов перемещено на
$GOPATH/src
, а импорт изменен наsw "sw/go-server-server/go"
, что по-прежнему даетmain.go:13:2: go/default.go:3:1: expected 'IDENT', found 'import'
Каким должен быть полный путь импорта для sw
импорта и что он означает?
$GOPATH/src/
- person JimB   schedule 23.09.2016$GOPATH/src/
? - person Adam Matan   schedule 23.09.2016package go
кажется очень запутанным.main
- это специальное имя пакета, используемое, чтобы указать, что в пакете есть основная функция, которая скомпилирована в исполняемый двоичный файл. - person reedobrien   schedule 23.09.2016package go import "net/http" ...
было бы правильно, но лично я бы не стал использовать go в качестве имени пакета или имени каталога. - person reedobrien   schedule 23.09.2016