2013-01-04 63 views
38

Tôi muốn gọi hàm từ một tệp khác trong ngôn ngữ đi lang thang, bất kỳ ai có thể trợ giúp không? test1.goCách gọi hàm từ một tệp khác bằng ngôn ngữ đi?

package main 

func main() { 
    demo() 
} 

test2.go

package main 

import "fmt" 

func main() { 
} 

func demo() { 
    fmt.Println("HI") 
} 

Làm thế nào để gọi bản demo trong test2 từ test1?

+0

Ý anh là gì bởi 'đi fmt' ? Giống như trong các thiết bị đầu cuối hoặc những gì? Làm thế nào nó cho thấy anh ta quan tâm đến bất cứ điều gì? –

Trả lời

39

Bạn không thể có nhiều hơn một main trong gói của mình.

Nói chung, bạn không thể có nhiều hơn một hàm với tên đã cho trong gói.

Xóa main trong test2.go và biên dịch ứng dụng. Hàm demo sẽ hiển thị từ test1.go.

+0

Tôi có thể xây dựng và chạy sau khi loại bỏ 'main' trong test2.go nhưng không chạy test1.go bằng cách sử dụng' go run test1.go'. Tại sao ? –

+49

'go run test1.go test2.go' –

+0

cảm ơn dystro! Tôi không biết sử dụng "đi fmt". –

9

Go Lang theo mặc định sẽ xây dựng/chỉ chạy tệp được đề cập. Để liên kết tất cả các tệp bạn cần chỉ định tên của tất cả các tệp trong khi chạy.

Run hoặc dưới hai lệnh:

$go run test1.go test2.go. //order of file doesn't matter 
$go run *.go 

Bạn nên làm điều tương tự, nếu bạn muốn xây dựng chúng.

0

Tôi đang tìm kiếm điều tương tự. Để trả lời câu hỏi của bạn "Cách gọi demo trong test2 từ test1?", đây là cách tôi đã làm. Chạy mã này với lệnh go run test1.go. Thay đổi thư mục current_folder thành nơi test1.go là.

test1.go

package main 

import (
    L "../current_folder/lib" 
) 

func main() { 
    L.Demo() 
} 

lib \ test2.go

đặt test2.go tập tin trong thư mục con lib

package anyname 

import "fmt" 

// This func must be Exported, Capitalized, and comment added. 
func Demo() { 
    fmt.Println("HI") 
} 
+0

Điều này đã được thực hiện với go1.9.2 windows/amd64 – Zelenko

Các vấn đề liên quan