Перед тем, как обратиться к способу OO этого, делает client.go
необходимо удержать функцию main
? Нужно ли от logic.go
от client.go
? Кроме того, logic.go
должен быть частью пакета. Я с трудом подбираю то, что осталось для краткости, и того, что может отсутствовать.
Как бы сделать вещи:
main.go (были бы одинаковыми для обоих случаев)
package main
import "client"
func main() {
client := client.Client { ClientUrl: url } // This takes the place of NewClient(url)
client.DummyFunc()
}
client.go
package client
type Client struct {
ClientUrl string
}
func (c Client) DummyFunc() {
// Logic here which returns the JSON response
}
Если вы хотите сохранить logic
отдельно от client
, вы могли бы это сделать.
client.go
package client
type Client struct {
ClientUrl string
Logic // An anonymous field let's you call Logic functions
}
logic.go
package client
type Logic struct {
// Fields
}
func (l Logic) DummyFunc() {
// Logic here which returns the JSON response
}
Обратите внимание, так как мы держали Logic
анонимную в Client
структуры, мы были в состоянии назвать DummyFunc
.
Вы можете увидеть еще несколько примеров здесь: http://golangtutorials.blogspot.com/2011/06/inheritance-and-subclassing-in-go-or.html
EDIT -------------------------------- ------------------------
Немного неудобно, но вот client.go
с основной функцией в нем и logic.go
является отдельным. Если вы добавите дополнительные функции в logic
, то client
сможет вызывать все остальные функции.
client.go
package main
import "logic"
type Client struct {
ClientUrl string
logic.Logic
}
func main() {
client := client.Client { ClientUrl: url } // This takes the place of NewClient(url)
client.DummyFunc()
}
logic.go
package logic
import "fmt"
type Logic struct {
// Fields
}
func (l Logic) DummyFunc() {
fmt.Printf("In DummyFunc\n")
}
С этим сказанным, я не уверен, что это лучший способ сделать это. Если logic
не имеет полей, то бессмысленно иметь его как отдельную структуру. Я бы сделал его функцией client
, как я указал в первом случае в исходном сообщении.
Вы правы. Я хочу основной func() только в файле client.go и в других реализациях функций в logic.go, которые я должен вызывать из моего client.go, передавая параметр URL. – psbits
Хорошо. Ясны ли изменения, которые вам нужно внести, чтобы объединить «клиент» и «главное»? Большая часть этого была бы такой же, просто перемещая некоторый код вокруг. – shellhead
поэтому основной фонд() находится в файле client.go, который при запуске должен вызывать функцию в файле logic.go, передавая URL. Здесь все намерено. Я ценю ваши усилия, хотя, если вы также можете предоставить свой способ сделать это, это будет здорово. Благодаря ! – psbits