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

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

ในการรันโปรแกรม GoLang จะต้องมีฟังก์ชัน main() ที่กำหนดไว้ ในบางกรณีเมื่อพัฒนาโปรแกรมสาธิตที่มีหลายไฟล์และต้องการใส่ไว้ในแพ็กเกจ main เดียวกัน และโฟลเดอร์นี้ไม่ได้อยู่ใน GOPATH จะรันโปรแกรมอย่างไร

สมมติว่าเรามีโครงสร้างโฟลเดอร์ดังต่อไปนี้ โดยที่ฟังก์ชัน main() ถูกกำหนดไว้ใน main.go

หากคุณเพียงแค่รันคำสั่งด้านล่าง โปรแกรมจะไม่สามารถเริ่มทำงานได้และจะแสดงข้อผิดพลาดหากมีการกำหนด struct บางอย่างในไฟล์อื่นและถูกใช้งาน

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

มีหลายวิธีในการรันโปรแกรมให้สำเร็จ

go run *.go

ในระบบปฏิบัติการ *nix บางระบบ รวมถึง Linux และ MacOS สามารถรัน go run *.go ซึ่งจะโหลดไฟล์ go ทั้งหมดในแพ็กเกจและรัน main()

แต่คำสั่งนี้ใช้ไม่ได้บน Windows เนื่องจาก token expansion ไม่ทำงานใน command line ของ 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 .

คล้ายกับคำสั่งด้านบน คำสั่งนี้จะพยายามโหลดไฟล์ทั้งหมดในโฟลเดอร์ปัจจุบันและรันฟังก์ชัน main() และสามารถทำงานได้บน 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 มีวิธีที่สะดวกและรวดเร็วในการสร้างไบนารีที่สามารถเรียกใช้งานได้ เพื่อให้สามารถรันได้ง่ายด้วยคำสั่ง 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

นี่คือความสวยงามของ GoLang

GOLANG  EXECUTABLE  MAIN PACKAGE  MULTIPLE FILE 

       

  RELATED


  0 COMMENT


No comment for this article.



  RANDOM FUN

When project timeline is tight