Rumah >pembangunan bahagian belakang >Golang >Bolehkah saya Menggabungkan Pustaka Go dan CLI dalam Direktori yang Sama?

Bolehkah saya Menggabungkan Pustaka Go dan CLI dalam Direktori yang Sama?

Barbara Streisand
Barbara Streisandasal
2024-12-02 20:09:15749semak imbas

Can I Bundle a Go Library and CLI in the Same Directory?

Bolehkah Anda Menggabungkan Pustaka dan CLI dalam Direktori Yang Sama?

Mempunyai direktori dengan pakej berasingan untuk perpustakaan (fungsi yang dieksport) dan antara muka baris arahan (boleh laku CLI) menimbulkan persoalan sama ada ia praktikal. Isu timbul apabila pengkompil go memerlukan kedua-dua pakej dengan fungsi "utama" untuk pelaksanaan program dan perpustakaan dengan fungsinya.

Masalah: Pelbagai Pakej

Seperti yang ditunjukkan oleh contoh yang diberikan, jika kedua-dua pakej "utama" dan perpustakaan wujud bersama dalam direktori yang sama, pengkompil go mengadu tentang mencari berbilang pakej dalam yang sama direktori.

Penyelesaian: Pakej Bersarang

Daripada mengekalkan pakej dalam direktori yang sama, penyelesaian mudah ialah mencipta subdirektori baharu dalam direktori induk ke rumah sama ada perpustakaan atau pakej CLI. Ingat untuk mengemas kini import anda untuk menggambarkan lokasi baharu pakej.

Contoh dengan Pakej Bersarang

Dalam contoh yang disemak di bawah, pakej "a" dialihkan ke subdirektori baharu "a" dalam direktori "so-multipack":

so-multipack/
    a/
        a.go
    main.go

Dikemas kini main.go

package main

import "../so-multipack/a"

func main() {
    a.Hello()
}

Dikemas kini a/a.go

package a

import "fmt"

func Hello() {
    fmt.Println("hello from a")
}

Kompilasi Berjaya

Menggunakan struktur direktori yang dikemas kini, arahan go kini dijalankan berjaya:

go run main.go
# Output: hello from a
go build
# Creates a "so-multipack" executable

Dengan menyarangkan pakej dalam direktori induk yang sama, kami boleh berjaya menampung kedua-dua pustaka dan CLI boleh laku.

Atas ialah kandungan terperinci Bolehkah saya Menggabungkan Pustaka Go dan CLI dalam Direktori yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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