Struktur Pakej Go: Adakah Kami Memerlukan Fail `package.go`, Cara Mengimport Fail Dalaman dan Bolehkah Kami Mengakses Jenis Merentas Fail?

Barbara Streisand
Lepaskan: 2024-11-26 04:04:08
asal
419 orang telah melayarinya

Go Package Structure: Do We Need a `package.go` File, How to Import Internal Files, and Can We Access Types Across Files?

Struktur Pakej Bahasa Go: Penjelasan Mendalam

Apabila bekerja dengan Go, mematuhi konvensyen yang ditetapkan adalah penting. Walau bagaimanapun, memahami konvensyen ini adalah penting sebelum pelaksanaannya yang berkesan. Artikel ini menangani soalan lazim mengenai struktur pakej Go.

Soalan

Persediaan: Mengikut struktur projek yang disyorkan, kami mempunyai:

$GOPATH/
  src/
    github.com/
      username/
        projectname/
          main.go
          numbers/
            rational.go
            real.go
            complex.go
Salin selepas log masuk

main.go:

package main

import (
  "fmt"
  "./numbers"
)

func main() {
  fmt.Println(numbers.Real{2.0})
}
Salin selepas log masuk

Soalan:

  • Adakah kita memerlukan fail package.go dalam setiap folder pakej?
  • Bagaimanakah kita mengimport fail dalam pakej yang sama dalam numbers.go?
  • Bolehkah kita menentukan jenis seperti Real in real.go dan mengaksesnya dalam main.go sebagai fmt.Println(numbers.Real{2.0})?

Jawapan

1. package.go Fail

Andaian bahawa setiap direktori pakej memerlukan fail package.go adalah tidak betul. Dalam Go, fail dalam satu direktori secara automatik dikumpulkan ke dalam pakej. Membuat fail package.go tidak diperlukan.

2. Mengimport Fail Dalam Pakej

Go tidak menyokong pengimportan fail. Nombor pakej hendaklah diimport terus, bukannya fail individu seperti rational.go, real.go dan complex.go. Dalam contoh kami, alih keluar awalan ./ dan gunakan import "github.com/username/projectname/numbers".

3. Jenis Perkongsian

Jenis seperti Real harus ditakrifkan dalam fail dalam pakej, seperti real.go. Memandangkan fail tergolong dalam pakej yang sama, tiada pernyataan import tambahan diperlukan. Mengakses jenis Real dalam main.go sebagai fmt.Println(numbers.Real{2.0}) adalah betul.

Atas ialah kandungan terperinci Struktur Pakej Go: Adakah Kami Memerlukan Fail `package.go`, Cara Mengimport Fail Dalaman dan Bolehkah Kami Mengakses Jenis Merentas Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan