คำถามติดแท็ก go

Go เป็นภาษาโปรแกรมโอเพนซอร์ซ มันถูกพิมพ์แบบคงที่ด้วยไวยากรณ์ที่ได้มาอย่างหลวม ๆ จาก C เพิ่มการจัดการหน่วยความจำอัตโนมัติความปลอดภัยของประเภทความสามารถในการพิมพ์แบบไดนามิกบางชนิดในตัวเพิ่มเติมเช่นอาร์เรย์ความยาวตัวแปร (เรียกว่าชิ้น) และแผนที่คีย์ค่าและ ห้องสมุดมาตรฐานขนาดใหญ่

24
ฉันจะตั้งค่าตัวแปรสภาพแวดล้อม GOPATH บน Ubuntu ได้อย่างไร ฉันต้องแก้ไขไฟล์อะไร
ฉันพยายามทำgo get: go get github.com/go-sql-driver/mysql และมันล้มเหลวด้วยข้อผิดพลาดต่อไปนี้: package github.com/go-sql-driver/mysql: cannot download, $GOPATH not set. For more details see: go help gopath เมื่อฉันทำgo envรายการค่าไปจะปรากฏดังนี้: ubuntu@ip-xxx-x-xx-x:~$ go env GOARCH="amd64" GOBIN="" GOCHAR="6" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux" GOPATH="" GORACE="" GOROOT="/usr/lib/go" GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64" CC="gcc" GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread" CGO_ENABLED="1" เห็นได้ชัดว่า GOPATH ไม่ได้ตั้งค่าฉันจะตั้งค่าอย่างไรและที่ไหน ฉันเห็นหลายกระทู้ที่พูดถึงข้อผิดพลาดนี้ แต่ไม่มีใครตอบคำถามของฉันไฟล์ใดที่ต้องแก้ไขเพื่อให้ค่าสำหรับเส้นทางนี้
258 linux  ubuntu  go 

6
การจัดการคำขอโพสต์ JSON ใน Go
ดังนั้นฉันจึงมีสิ่งต่อไปนี้ซึ่งดูเหมือนว่าแฮ็คอย่างไม่น่าเชื่อและฉันคิดกับตัวเองว่า Go มีการออกแบบห้องสมุดที่ดีกว่านี้ แต่ฉันไม่พบตัวอย่างของ Go ที่จัดการคำขอ POST ของข้อมูล JSON พวกเขาทั้งหมดฟอร์ม POST นี่คือตัวอย่างคำขอ: curl -X POST -d "{\"test\": \"that\"}" http://localhost:8082/test และนี่คือรหัสโดยมีบันทึกฝังอยู่: package main import ( "encoding/json" "log" "net/http" ) type test_struct struct { Test string } func test(rw http.ResponseWriter, req *http.Request) { req.ParseForm() log.Println(req.Form) //LOG: map[{"test": "that"}:[]] var t test_struct for …
250 json  go 

2
ไวยากรณ์การประกาศฟังก์ชัน: สิ่งต่าง ๆ ในวงเล็บก่อนชื่อฟังก์ชัน
ฉันขอโทษฉันไม่สามารถเจาะจงมากขึ้นในชื่อคำถาม แต่ฉันอ่านรหัสGoบางส่วนและฉันพบการประกาศฟังก์ชันของแบบฟอร์มนี้ func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { ... } จากhttps://github.com/mattermost/platform/blob/master/api/context.go func (s *GracefulServer) BlockingClose() bool { ... } จากhttps://github.com/braintree/manners/blob/master/server.go อะไร(h handler)และ(s *GracefulServer)ระหว่างวงเล็บหมายถึง? การประกาศฟังก์ชันทั้งหมดหมายความว่าอย่างไรโดยคำนึงถึงความหมายของสิ่งต่าง ๆ ระหว่างวงเล็บ? แก้ไข นี่ไม่ใช่ความซ้ำซ้อนของฟังก์ชั่นและวิธีการใน Go? : คำถามนี้มาถึงฉันเพราะฉันไม่ทราบว่าสิ่งที่อยู่ในวงเล็บก่อนที่ชื่อฟังก์ชั่นไม่ได้เพราะฉันสงสัยว่าสิ่งที่แตกต่างระหว่างฟังก์ชั่นและวิธีการ ... ถ้าฉันรู้ว่าประกาศนี้เป็นวิธีที่ฉันจะไม่ ไม่มีคำถามนี้ในตอนแรก ถ้ามีคนสงสัยฉันเหมือนกันสักวันฉันไม่เชื่อว่าเธอจะไปหา "วิธีการแบบโกลาน" เพราะเธอไม่รู้ว่านี่เป็นกรณี มันก็เหมือนกับการสงสัยว่าตัวอักษร "sigma" หมายถึงก่อนการแสดงออกทางคณิตศาสตร์ (ไม่รู้ว่ามันหมายถึงการรวมกัน) และมีคนบอกว่ามันเป็นสำเนาของความแตกต่างระหว่างการรวมและสิ่งอื่น ๆ นอกจากนี้คำตอบสั้น ๆ สำหรับคำถามนี้ ("เป็นผู้รับ") คือไม่มีคำตอบว่า …
249 go 

4
ฉันจะส่งสตริง JSON ในคำขอ POST ใน Go ได้อย่างไร
ฉันพยายามทำงานกับ Apiary และสร้างแม่แบบสากลเพื่อส่ง JSON ไปยังเซิร์ฟเวอร์จำลองและมีรหัสนี้: package main import ( "encoding/json" "fmt" "github.com/jmcvetta/napping" "log" "net/http" ) func main() { url := "http://restapi3.apiary.io/notes" fmt.Println("URL:>", url) s := napping.Session{} h := &http.Header{} h.Set("X-Custom-Header", "myvalue") s.Header = h var jsonStr = []byte(` { "title": "Buy cheese and bread for breakfast." }`) var data map[string]json.RawMessage …
244 json  rest  go  apiary 

9
วิธีรับไดเรกทอรีของไฟล์ที่กำลังทำงานอยู่
ใน nodejs ผมใช้__dirname อะไรคือสิ่งที่เท่าเทียมกันใน Golang? ฉันมี googled และพบบทความนี้http://andrewbrookins.com/tech/golang-get-directory-of-the-current-file/ ที่ซึ่งเขาใช้รหัสด้านล่าง _, filename, _, _ := runtime.Caller(1) f, err := os.Open(path.Join(path.Dir(filename), "data.csv")) แต่มันเป็นวิธีที่ถูกต้องหรือเป็นวิธีสำนวนที่ต้องทำใน Golang?
239 go 

7
การจัดระเบียบโครงการหลายไฟล์ไป [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน8 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ หมายเหตุ: คำถามนี้เกี่ยวข้องกับคำถามนี้แต่สองปีเป็นเวลานานในประวัติศาสตร์ของ Go วิธีมาตรฐานในการจัดระเบียบโครงการ Go ในระหว่างการพัฒนาคืออะไร? โครงการของฉันเป็นแพ็คเกจเดียวmypackดังนั้นฉันเดาว่าฉันจะวางไฟล์. go ทั้งหมดไว้ในmypackไดเรกทอรี แต่แล้วฉันต้องการทดสอบในระหว่างการพัฒนาดังนั้นฉันต้องการอย่างน้อยหนึ่งไฟล์ที่ประกาศmainแพ็คเกจเพื่อที่ฉันจะได้ทำgo run trypack.go ฉันจะจัดระเบียบสิ่งนี้ได้อย่างไร ฉันต้องทำgo install mypackทุกครั้งที่ฉันต้องการลองหรือไม่?
238 go 

5
วิธีหลีกเลี่ยงข้อผิดพลาดที่น่ารำคาญ“ ประกาศและไม่ใช้แล้ว”
ฉันกำลังเรียนรู้ไป แต่ฉันรู้สึกว่ามันน่ารำคาญเล็กน้อยเมื่อรวบรวมฉันไม่ควรปล่อยให้ตัวแปรหรือแพ็กเกจที่ไม่ได้ใช้ นี่มันทำให้ฉันช้าลงจริงๆ ตัวอย่างเช่นฉันแค่ต้องการประกาศแพ็คเกจใหม่และวางแผนที่จะใช้ในภายหลังหรือเพียงแค่แสดงข้อคิดเห็นคำสั่งเพื่อทดสอบ ฉันมักจะได้รับข้อผิดพลาดและจำเป็นต้องแสดงความคิดเห็นการใช้งานเหล่านั้นทั้งหมด มีวิธีใดบ้างในการหลีกเลี่ยงการเช็คอินแบบนี้หรือไม่?
238 go 


6
รับชิ้นกุญแจจากแผนที่
มีวิธีที่ง่ายกว่าหรือดีกว่าในการรับชิ้นส่วนของคีย์จากแผนที่ใน Go หรือไม่? ขณะนี้ฉันกำลังวนซ้ำแผนที่และคัดลอกกุญแจไปยังส่วน: i := 0 keys := make([]int, len(mymap)) for k := range mymap { keys[i] = k i++ }
230 go 

3
เอาแพ็คเกจที่ติดตั้งไปด้วย
ฉันวิ่งgo get packageไปดาวน์โหลดแพ็คเกจก่อนที่จะเรียนรู้ว่าฉันจำเป็นต้องตั้งค่าGOPATHมิฉะนั้นแพ็คเกจนั้นจะติดตั้งรูทของฉันไป (ฉันอยากจะติดตั้ง Go ของฉันให้สะอาดและแยกคอร์จากที่กำหนดเอง) ฉันจะลบแพ็กเกจที่ติดตั้งไว้ก่อนหน้านี้ได้อย่างไร
227 go 

4
วิธีที่ถูกต้องในการเริ่มต้นชิ้นส่วนที่ว่างเปล่า
หากต้องการประกาศชิ้นว่างเปล่าที่มีขนาดไม่คงที่จะทำอย่างไรดีกว่า: mySlice1 := make([]int, 0) หรือ: mySlice2 := []int{} แค่สงสัยว่าอันไหนเป็นวิธีที่ถูกต้อง
227 arrays  go  slice 

12
รวบรวมได้อย่างไรอย่างรวดเร็ว
ฉัน Googled และแหย่ไปที่เว็บไซต์ Go แต่ดูเหมือนว่าฉันจะไม่สามารถหาคำอธิบายสำหรับเวลาสร้างที่ไม่ธรรมดาของ Go พวกเขาเป็นผลิตภัณฑ์ของคุณสมบัติภาษา (หรือขาดมัน), คอมไพเลอร์เพิ่มประสิทธิภาพสูงหรืออย่างอื่น? ฉันไม่พยายามโปรโมตไป; ฉันแค่อยากรู้

12
มีวิธีการสำหรับชิ้น
มีอะไรที่คล้ายกับslice.contains(object)วิธีการใน Go โดยไม่ต้องทำการค้นหาผ่านแต่ละองค์ประกอบเป็นชิ้นหรือไม่?
214 go  slice 

3
เครื่องหมายขีดล่างหน้าคำสั่งการนำเข้าหมายถึงอะไร
ฉันเห็นตัวอย่างนี้จากsqlite3เมื่อGitHub : import ( "database/sql" "fmt" _ "github.com/mattn/go-sqlite3" "log" "os" ) และดูเหมือนจะไม่สามารถค้นหาสิ่งที่ขีดล่างหน้าคำสั่งการนำเข้าหมายถึง
207 go  import 

9
เป็นไปได้หรือไม่ที่จะจับสัญญาณ Ctrl + C และเรียกใช้ฟังก์ชั่นการล้างข้อมูลในแบบ "เลื่อน"
ฉันต้องการจับสัญญาณCtrl+C( SIGINT) ที่ส่งจากคอนโซลและพิมพ์ผลรวมการวิ่งบางส่วน เป็นไปได้ไหมที่ Golang? หมายเหตุ: เมื่อครั้งแรกที่ผมโพสต์คำถามที่ผมสับสนเกี่ยวกับCtrl+Cการเป็นแทนSIGTERMSIGINT
207 signals  go  sigterm 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.