доступ к основной структуре из пакетов - PullRequest
0 голосов
/ 14 июля 2020

Пожалуйста, обратите внимание на этот пример кода go, также здесь: https://play.golang.org/p/ZcNy_crAg51

package main

import (
    "fmt"
    "play.ground/foo"
)

type SampleStruct struct {
    token int
}

var (
    MainSampleVar = SampleStruct{token: 333}
)

func main() {
    fmt.Println("Hello!")
    b := foo.Auxstruct{AuxToken: 4333}
    fmt.Printf("b: %#v\n", b)
    foo.AuxHello()
}
-- go.mod --
module play.ground
-- foo/foo.go --
package foo

import "fmt"

type Auxstruct struct {
    AuxToken int
}

func AuxHello() {
    fmt.Println("Aux says hello!")
}

Я могу получить доступ к foo.Auxstruct в основном. go.

Возможно ли go другое направление и доступ main.SampleStruct в пакете foo?

Пожалуйста, покажите, как / объясните.

1 Ответ

0 голосов
/ 14 июля 2020

Это невозможно в Go, потому что это приведет к циклической зависимости: play.ground импорт play.ground/foo и play.ground/foo импорт play.ground. Go не допускает таких циклических зависимостей, потому что они имеют множество недостатков .

Есть несколько возможных решений:

  1. Вы можете переместить SampleStruct в пакет play.ground/foo. Таким образом, вы можете использовать SampleStruct в play.ground/foo и импортировать его в play.ground.
  2. В качестве альтернативы переместите SampleStruct в отдельный пакет, например play.ground/bar. Таким образом, вы можете импортировать play.ground/bar как в play.ground/foo, так и в play.ground.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...