Возможно, я ошибаюсь (я прочитал «Как писать код перехода»), но вот чего я пытаюсь достичь: хочу написать пакет golang, который также поставляется с CLI, так что пользователь может использовать пакет в своих собственных программах, но также использовать CLI, который я создал с ним.Building CLI app/package в Go
Так что я до сих пор эта структура:
mypackage/
-api/
-account.go // package api
-node.go // package api
-main.go // package main - this is where I want
// the executable code to be that is put in the `bin` folder.
Это структура очень сырой файл, как я только начинал проект, но это то, что я пытаюсь достичь, а не строить пакет с полезным кодом в нем, а затем создать отдельное репо с моим CLI в нем. Но когда я пытаюсь запустить main.go
, он говорит undefined: Account
(который является структурой в account.go
).
Содержимое моего кода не имеет значения прямо сейчас, это очень просто, поскольку я просто пытаюсь заставить код работать. Вот что у меня есть.
account.go
package api
import (
"io/ioutil"
"net/http"
)
type Account struct {
email string
}
main.go
package main
import (
"github.com/username/mypackage/api"
"fmt"
)
func main() {
a := Account{}
fmt.Printf("%T", a)
}
Если это совершенно плохая практика, я полагаю, я просто сделать 2 операции РЕПО, один с CLI, а другой с моей фактической код пакета (опять же, можно использовать в разработке другими путем импорта), но мне бы очень хотелось, чтобы это было все-в-одном репо.
'' '' '' находится в пакете 'api', поэтому вы ссылаетесь на него как' api.Account' – JimB
Ух ты ... определенно передумал все и пропустил это ... Вот и все. Благодаря! –
'api' - [плохое имя для пакета] (https://blog.golang.org/package-names), тем более, что вы явно упоминаете других пользователей, использующих ваш пакет. –