Run code with multiple files in the same main package in GoLang

  sonic0002        2021-05-15 10:20:10       22,069        0          English  简体中文  繁体中文  ภาษาไทย  Tiếng Việt 

Để chạy một chương trình GoLang, cần phải có một hàm main() được định nghĩa. Trong một số trường hợp khi phát triển một chương trình demo có nhiều file và chỉ muốn đặt chúng trong cùng một package main và thư mục này không nằm trong GOPATH, làm thế nào để chạy chương trình?

Giả sử chúng ta có cấu trúc thư mục sau, trong đó hàm main() được định nghĩa trong main.go.

Nếu bạn chỉ chạy lệnh bên dưới, nó sẽ không thể khởi động chương trình và đưa ra một số lỗi nếu một số struct được định nghĩa trong các file khác và đang được sử dụng.

PS D:\Project\Go\sourcecode_updater\v2> go run main.go
# command-line-arguments
.\main.go:35:11: undefined: Pool
.\main.go:76:12: undefined: UpdateJob

Có một vài cách để chạy chương trình thành công.

go run *.go

Trong một số hệ điều hành *nix bao gồm Linux và MacOS, có thể chạy go run *.go, lệnh này sẽ tải tất cả các file go trong package và chạy hàm main().

Nhưng lệnh này không hoạt động trên Windows vì việc mở rộng token không hoạt động trong dòng lệnh windows.

PS D:\Project\Go\sourcecode_updater\v2> go run *.go
CreateFile *.go: The filename, directory name, or volume label syntax is incorrect.

go run .

Tương tự như lệnh trên, lệnh này cũng sẽ cố gắng tải tất cả các file trong thư mục hiện tại và chạy hàm main() và nó cũng có thể hoạt động trên Windows.

PS D:\Project\Go\sourcecode_updater\v2> go run .
all workers started
2021/05/15 23:15:54 start fetching posts to process
2021/05/15 23:15:54 start to process batch 1

go build

GoLang cung cấp một cách rất thuận tiện và nhanh chóng để tạo ra một binary có thể thực thi để có thể chạy dễ dàng bằng lệnh go build

PS D:\Project\Go\sourcecode_updater\v2> go build -o main.exe
PS D:\Project\Go\sourcecode_updater\v2> ./main
all workers started
2021/05/15 23:17:29 start fetching posts to process
2021/05/15 23:17:29 start to process batch 1

Đây là vẻ đẹp của GoLang.

GOLANG  EXECUTABLE  MAIN PACKAGE  MULTIPLE FILE 

       

  RELATED


  0 COMMENT


No comment for this article.



  RANDOM FUN

HTTP status code cheat sheet