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

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

3
แผนที่ส่งผ่านค่าหรือโดยการอ้างอิงใน Go?
แผนที่ส่งผ่านค่าหรือการอ้างอิงใน Go หรือไม่? เป็นไปได้เสมอที่จะกำหนดฟังก์ชันดังต่อไปนี้ แต่นี่เป็นการ overkill หรือไม่? func foo(dat *map[string]interface{}) {...} คำถามเดียวกันสำหรับค่าตอบแทน ฉันควรส่งตัวชี้กลับไปที่แผนที่หรือส่งคืนแผนที่เป็นค่า? แน่นอนว่ามีเจตนาที่จะหลีกเลี่ยงการคัดลอกข้อมูลที่ไม่จำเป็น
94 go 

2
ความหมายของ…อินเทอร์เฟซ {} (dot dot dot interface)
ด้านล่างนี้เป็นโค้ด Go ที่ฉันมีคำถาม โดยเฉพาะaฟังก์ชันนี้คืออะไร? func DPrintf(format string, a ...interface{}) (n int, err error) { if Debug > 0 { n, err = fmt.Printf(format, a...) } return } มีใครบอกฉันได้ไหมว่าจุดสามจุดอยู่ที่นี่คืออะไร? แล้ว...interface{}ทำยังไง?
93 go 

9
“ เส้นทางการนำเข้าที่ไม่รู้จัก” ด้วย go get
ฉันพยายามติดตั้ง a web.goแต่กำลังเรียกใช้go get github.com/hoisie/webผลตอบแทน package bufio: unrecognized import path "bufio" package bytes: unrecognized import path "bytes" package crypto/rand: unrecognized import path "crypto/rand" package crypto/sha1: unrecognized import path "crypto/sha1" package crypto/tls: unrecognized import path "crypto/tls" package encoding/base64: unrecognized import path "encoding/base64" package encoding/binary: unrecognized import path "encoding/binary" package encoding/json: unrecognized …
93 go  install 

4
ฉันจะเปรียบเทียบสตริงใน GoLang ได้อย่างไร
ฉันไม่สามารถสร้างผลลัพธ์ 'จริง' เมื่อพูดถึงการเปรียบเทียบสตริง Go ฉันเขียนสิ่งต่อไปนี้เพื่ออธิบายปัญหาและแนบภาพหน้าจอของผลลัพธ์ // string comparison in Go package main import "fmt" import "bufio" import "os" func main() { var isLetterA bool fmt.Println("Enter the letter a") reader := bufio.NewReader(os.Stdin) input, _ := reader.ReadString('\n') if(input == "a") { isLetterA = true } else { isLetterA = false } fmt.Println("You …
93 go 


9
วิธีการทิ้ง goroutine stacktraces?
ฉันมีพื้นหลัง Java และฉันชอบใช้สัญญาณ QUIT เพื่อตรวจสอบการถ่ายโอนข้อมูลเธรด Java จะให้ Golang พิมพ์ goroutines stack trace ได้อย่างไร?
92 go 

8
จะทดสอบความเท่าเทียมกันของแผนที่ใน Golang ได้อย่างไร?
ฉันมีกรณีทดสอบที่ขับเคลื่อนด้วยตารางเช่นนี้: func CountWords(s string) map[string]int func TestCountWords(t *testing.T) { var tests = []struct { input string want map[string]int }{ {"foo", map[string]int{"foo":1}}, {"foo bar foo", map[string]int{"foo":2,"bar":1}}, } for i, c := range tests { got := CountWords(c.input) // TODO test whether c.want == got } } ฉันสามารถตรวจสอบว่าความยาวเท่ากันหรือไม่และเขียนลูปที่ตรวจสอบว่าทุกคู่คีย์ - ค่าเหมือนกันหรือไม่ แต่ฉันต้องเขียนเช็คนี้อีกครั้งเมื่อต้องการใช้กับแผนที่ประเภทอื่น (พูดmap[string]string) …

25
ไปดูตัวอย่างและสำนวน [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดขึ้นมาใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน9 ปีที่ผ่านมา ไม่มีรหัส Go ให้เรียนรู้ภาษามากนักและฉันแน่ใจว่าไม่ใช่คนเดียวที่ทดลองใช้ ดังนั้นหากคุณพบสิ่งที่น่าสนใจเกี่ยวกับภาษาโปรดโพสต์ตัวอย่างที่นี่ ฉันยังมองหา วิธีการทำสิ่งต่างๆใน Go รูปแบบการคิด C / C ++ "พอร์ต" ไปที่ Go, ข้อผิดพลาดทั่วไปเกี่ยวกับไวยากรณ์ อะไรที่น่าสนใจจริงๆ
91 go 

8
วิธีหยุด http.ListenAndServe ()
ฉันใช้ไลบรารี Mux จาก Gorilla Web Toolkit พร้อมกับเซิร์ฟเวอร์ Go http ที่ให้มา ปัญหาคือในแอปพลิเคชันของฉันเซิร์ฟเวอร์ HTTP เป็นเพียงส่วนประกอบเดียวและจำเป็นต้องหยุดและเริ่มต้นตามดุลยพินิจของฉัน เมื่อฉันเรียกhttp.ListenAndServe(fmt.Sprintf(":%d", service.Port()), service.router)มันว่าบล็อกและดูเหมือนว่าฉันจะหยุดเซิร์ฟเวอร์ไม่ให้ทำงานไม่ได้ ฉันทราบว่าปัญหานี้เคยเป็นปัญหาในอดีตยังคงเป็นเช่นนั้นอยู่หรือไม่? มีโซลูชันใหม่ ๆ หรือไม่?
91 go 

3
เหตุผลสำหรับขนาดใหญ่ของไฟล์ปฏิบัติการที่รวบรวมได้ของ Go
ฉันปฏิบัติตามโปรแกรม hello world Go ซึ่งสร้างไฟล์ปฏิบัติการบนเครื่อง linux ของฉัน แต่ฉันประหลาดใจเมื่อเห็นขนาดของโปรแกรม Hello world Go แบบธรรมดามันคือ 1.9MB! เหตุใดการเรียกใช้งานโปรแกรมง่ายๆใน Go จึงมีขนาดใหญ่มาก
91 go  executable 

7
จะทดสอบความตื่นตระหนกได้อย่างไร?
ฉันกำลังพิจารณาวิธีการเขียนแบบทดสอบเพื่อตรวจสอบว่าโค้ดบางส่วนนั้นตื่นตระหนกหรือไม่? ฉันรู้ว่า Go ใช้recoverเพื่อจับความตื่นตระหนก แต่ไม่เหมือนกับการพูดรหัส Java คุณไม่สามารถระบุได้ว่าควรข้ามรหัสใดในกรณีที่ตกใจหรือคุณมีอะไร ดังนั้นถ้าฉันมีฟังก์ชัน: func f(t *testing.T) { defer func() { if r := recover(); r != nil { fmt.Println("Recovered in f", r) } }() OtherFunctionThatPanics() t.Errorf("The code did not panic") } ฉันไม่สามารถบอกได้จริงๆว่าOtherFunctionThatPanicsตื่นตระหนกและเราฟื้นตัวหรือไม่หรือฟังก์ชั่นไม่ตื่นตระหนกเลย ฉันจะระบุรหัสที่จะข้ามไปได้อย่างไรหากไม่มีความตื่นตระหนกและรหัสใดที่จะดำเนินการหากเกิดความตื่นตระหนก ฉันจะตรวจสอบได้อย่างไรว่าเราหายจากอาการตื่นตระหนกหรือไม่?
91 testing  go 

3
การอ้างอิงช่วงแทนค่า
ฉันเห็นช่วงดังกล่าวส่งคืนคีย์และ "สำเนา" ของค่า มีวิธีให้ช่วงนั้นคืนที่อยู่ของรายการหรือไม่? ตัวอย่าง package main import "fmt" type MyType struct { field string } func main() { var array [10]MyType for _, e := range array { e.field = "foo" } for _, e := range array { fmt.Println(e.field) fmt.Println("--") } } http://play.golang.org/p/AFOGG9NGpx ที่นี่ "ฟิลด์" ไม่ได้รับการแก้ไขเนื่องจาก range ส่งสำเนาของฟิลด์ฉันต้องใช้ดัชนีหรือมีวิธีอื่นในการแก้ไขค่าหรือไม่? …
91 pointers  reference  go 

5
Go อยู่ภายใต้การรั่วไหลของหน่วยความจำเล็กน้อยเช่นเดียวกับ Java หรือไม่?
นี่คือข้อเท็จจริง: ภาษา Go มีคนเก็บขยะ Java มีที่เก็บขยะ โปรแกรม Java จำนวนมากมีการรั่วไหลของหน่วยความจำ (บอบบางหรือไม่) ดังตัวอย่างโปรแกรม Java ที่มีหน่วยความจำรั่ว (ไม่ใช่สำหรับคนใจร้อนคำถามอาจสั่นคลอนความเชื่อของคุณ) ดูที่นี่เกี่ยวกับโปรแกรม Java เล็ก ๆ ที่เรียกว่า Tomcat ที่มีปุ่ม "find leaks": มีวิธี เพื่อหลีกเลี่ยงการรั่วไหลของหน่วยความจำที่ไม่ได้ใช้งานใน Tomcat? ดังนั้นฉันจึงสงสัยว่า: โปรแกรมที่เขียนใน Go จะแสดงการรั่วไหลของหน่วยความจำ (ที่ละเอียดอ่อนหรือไม่) แบบเดียวกับที่บางโปรแกรมที่เขียนด้วย Java จัดแสดงหรือไม่?
91 java  memory-leaks  go 

1
วิธีนับรายการในแผนที่ Go?
ถ้าฉันต้องการนับรายการในโครงสร้างแผนที่ฉันควรใช้คำสั่งใด? ฉันพยายามที่จะใช้ for _, _ := range m {...} แต่ดูเหมือนว่าไวยากรณ์เป็นเท็จ
91 map  go 


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