Я прочитал документ о создании пользовательских пакетов и т. Д., Но я не могу понять, в чем проблема.golang: Пользовательский пакет и 'undefined'
GOPATH=/Users/lrsmith/GoWorkSpace
|->bin
|->pkg
|->src
|->github.com
|->lrsmith
|-> zaphod
|-> zaphod.go
Я сделал «иди github.com/lrsmith/go-icinga2-api/iapi» и уронил его в ту же директорию, как «Зафод» и создал и .a файл под упак ,
GOPATH=/Users/lrsmith/GoWorkSpace
|->bin/
|->pkg/
|->..../iapi.a
|->src/
|->github.com/
|->lrsmith/
|-> zaphod/
|-> zaphod.go
|-> go-icinga2-api/
zaphod.go очень просто прямо сейчас
package main
import (
"github.com/lrsmith/go-icinga2-api/iapi"
)
func main() {
t := iapi.Config("zaphod","beeblebrox","http://localhost",true)
}
Когда я иду построить в Зафод каталог я получаю ./zaphod.go:11 не определено: iapi.Config
Я прочитал документы, проверил случаи и попробовал разные структуры, но я не могу заставить его загрузить пакет и позвольте мне позвонить iapi.Config. Код iapi работает, и если я что-то создаю в каталоге go-icinga2-api, он отлично работает, и тест проходит все.
Я хочу создать отдельную базу проектов/кода, которая импортирует go-icinga2-api и использует ее, но не может показаться, что она работает.
Благодаря Len
Добавлена информация. Структура идут-icinga2-АФИ
go-icinga2-api
|-> iapi
|-> client.go
|-> client_test.go
|-> host.go
.......
client.go является
// Package iapi provides a client for interacting with an Icinga2 Server
package iapi
import (
"bytes"
"crypto/tls"
"encoding/json"
"fmt"
"net/http"
)
// Server ... Use to be ClientConfig
type Server struct {
Username string
Password string
BaseURL string
AllowUnverifiedSSL bool
httpClient *http.Client
}
// func Config ...
func (server *Server) Config(username, password, url string, allowUnverifiedSSL bool) (*Server, error) {
// TODO : Add code to verify parameters
return &Server{username, password, url, allowUnverifiedSSL, nil}, nil
}
Я попытался с .go файлов до одного уровня, т.е. не вложен под iapi/к для того же Результаты.
I обновите вопрос. Файлы в go-icinga2-api живут по одному пути под файлом dir/iapi. –
Большое спасибо, это была проблема. Я создал новую функцию New и назвал ее, и она работает так, как я ожидал. –