2014-06-18 22 views
5

Xin chào tất cả tôi khá mới đối với Golang, tôi đang viết một ứng dụng khách đồ chơi và ứng dụng máy chủ chỉ để tìm hiểu các thư viện.Đi dự án với 2 tập tin thực thi

Nhưng tôi có thư mục dự án:

[email protected] {~/workspace/gospace/src/github.com/redbrain/station} $ echo $GOPATH 
/Users/philipherron/workspace/gospace 

Tôi muốn có 2 mã nhị phân:

  • client.go
  • server.go

Nhưng khi tôi xây dựng Tôi nhận được:

[email protected] {~/workspace/gospace/src/github.com/redbrain/station} $ go build github.com/redbrain/station/ 
# github.com/redbrain/station 
./server.go:5: main redeclared in this block 
    previous declaration at ./client.go:5 

Tôi đoán điều này là bởi vì có vẻ như tôi đang làm cho các nguồn điện trong cùng một gói.

Vì vậy, tôi cố gắng tạo ra một khách hàng và một subdir máy chủ và có những chương trình trong mỗi người, nhưng tôi nhận được:

[email protected]lips-iMac {~/workspace/gospace/src/github.com/redbrain/station} $ go build github.com/redbrain/station/client 
go install github.com/redbrain/station/client: build output "client" already exists and is a directory 

Tôi đoán đây là bởi vì tôi có cách bố trí của:

$ tree 
. 
├── client 
│   └── client.go 
└── server 
    └── server.go 

2 directories, 4 files 

Không chắc chắn làm thế nào để có được xung quanh này, nó sẽ chỉ được tốt đẹp để có cùng một khách hàng và máy chủ trong cùng một thư mục nhưng có lẽ điều này là chống lại làm thế nào tôi nên làm những việc trong đi?

+0

Lệnh go build (cố gắng xây dựng) cố gắng tạo một tệp thực thi trong thư mục hiện tại của bạn. Hãy thử thực hiện nó từ một thư mục mà không có tập tin hoặc thư mục có tên là khách hàng tồn tại. – fuz

+0

Cảm ơn yeah tôi đã không nhận thấy rằng cảm ơn! – redbrain

Trả lời

7

chỉ cần đổi tên tệp .go của bạn. Trình biên dịch đang cố gắng ghi vào 'client' nhưng 'client' đã được thực hiện bởi thư mục.

$ tree 
. 
├── client 
│ └── main.go 
└── server 
    └── main.go 

2 directories, 4 files 

Và/Hoặc tạo một kịch bản mà xuất chúng với một cái tên khác go build -o client client/main.go

+0

Cảm ơn tôi thấy bây giờ cảm thấy rất ngớ ngẩn tôi đã không nhận thấy rằng cảm ơn. – redbrain

0

cùng với với các gói riêng biệt như trên, nếu bạn đặt Gobin = $ GOPATH/bin sau đó nó sẽ tạo client và server trong thư mục bin và nó sẽ không va chạm với tên dir

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