ในฐานะผู้เริ่มต้นฉันพบข้อผิดพลาดนี้เมื่อฉันพยายามใช้คำสั่ง go ต่างๆ (สร้างเรียกใช้และติดตั้ง) ในระยะสั้นที่คุณไม่สามารถไปติดตั้งfilename.go filename.goคุณสามารถติดตั้งแพ็คเกจเท่านั้น
สิ่งนี้ทำให้สับสนเพราะฉันได้เรียนรู้ว่า:
nate:~/work/src/dir $ go run hello/hello.go
hello, world.
ใช้งานได้ดี แต่ฉันคิดไม่ออกว่าทำไมการติดตั้งถึงใช้ไม่ได้:
nate:~/work/src/dir $ go install hello/hello.go
go install: no install location for .go files listed on command line (GOBIN not set)
nate:~/work/src/dir $ go install hello
can't load package: package hello: cannot find package "hello" in any of:
/opt/go/src/hello (from $GOROOT)
/home/ubuntu/work/src/hello (from $GOPATH)
ไม่ว่าฉันจะอยู่ในไดเรกทอรีใด:
nate:~/work/src/dir $ cd hello
nate:~/work/src/dir/hello $ go install hello.go
go install: no install location for .go files listed on command line (GOBIN not set)
nate:~/work/src/dir/hello $ go install hello
can't load package: package hello: cannot find package "hello" in any of:
/opt/go/src/hello (from $GOROOT)
/home/ubuntu/work/src/hello (from $GOPATH)
ความสับสนนี้เป็นเพราะgo run ใช้ได้กับไฟล์ต้นฉบับของ Go เท่านั้น (ชื่อไฟล์ที่ลงท้ายด้วย. go ) และgo installยอมรับเฉพาะแพ็กเกจ แพ็กเกจตั้งชื่อตามพา ธ อิมพอร์ตหรือพา ธ ระบบไฟล์ ดังนั้น:
nate:~/work/src/dir $ go install dir/hello
nate:~/work/src/dir $ go install ./hello/
nate:~/work/src/dir/hello $ go install .
ทั้งหมดทำงานได้ดี อย่างแรกอ้างถึงแพ็กเกจตามเส้นทางการนำเข้า (กำหนดให้ $ GOPATH = "/ home / nate / work" เครื่องมือ go ค้นหาซอร์สโค้ดใน / home / nate / work / src) ส่วนอื่น ๆ จะถูกตีความว่าเป็นระบบไฟล์ เส้นทางเนื่องจากช่วงเวลานำหน้า
ดูเอกสาร GOPATHด้วย
go install
ติดตั้งแพ็กเกจไม่ใช่แต่ละไฟล์ โปรดอ่านgolang.org/cmd/goทั้งหมดและดูวิธีตั้งค่าไฟล์ของคุณ