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

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

1
จำนวนองค์ประกอบในช่อง
การใช้ช่องสัญญาณบัฟเฟอร์จะวัดจำนวนองค์ประกอบในช่องได้อย่างไร ตัวอย่างเช่นฉันกำลังสร้างและส่งในช่องเช่นนี้: send_ch := make(chan []byte, 100) // code send_ch <- msg ฉันต้องการที่จะวัดว่าหลายmsgsอยู่ในช่องsend_ch ฉันทราบว่าเนื่องจากการเกิดขึ้นพร้อมกันการวัดผลจะไม่แน่นอนเนื่องจากอาจเกิดการสุ่มตัวอย่างล่วงหน้าระหว่างการวัดและการกระทำ (เช่นที่กล่าวถึงในวิดีโอนี้Google I / O 2012 - Go Concurrency Patterns ) ฉันจะใช้สิ่งนี้เพื่อควบคุมการไหลระหว่างผู้ผลิตและผู้บริโภคเช่นเมื่อฉันผ่านลายน้ำสูงเปลี่ยนพฤติกรรมบางอย่างจนกว่าฉันจะผ่านลายน้ำต่ำ
88 go 

5
เป็นไปได้ไหมที่จะมีเทมเพลตซ้อนใน Go โดยใช้ไลบรารีมาตรฐาน
ฉันจะรับเทมเพลตที่ซ้อนกันเช่น Jinja ใน python runtime ได้อย่างไร TBC สิ่งที่ฉันหมายถึงคือฉันจะมีเทมเพลตจำนวนมากที่สืบทอดมาจากเทมเพลตพื้นฐานได้อย่างไรเพียงแค่ยื่นในบล็อกของเทมเพลตพื้นฐานเช่น Jinja / django-templates เป็นไปได้ไหมโดยใช้เฉพาะhtml/templateในไลบรารีมาตรฐาน หากนั่นไม่ใช่ความเป็นไปได้ทางเลือกของฉันคืออะไร หนวดดูเหมือนจะเป็นตัวเลือก แต่ถ้าอย่างนั้นฉันจะพลาดคุณสมบัติที่ละเอียดอ่อนเหล่านั้นhtml/templateเช่นการหลบหนีตามบริบท ฯลฯ หรือไม่? มีทางเลือกอื่นอะไรอีกบ้าง? (สภาพแวดล้อม: Google App Engin, Go runtime v1, Dev - Mac OSx lion) ขอบคุณที่อ่าน.

6
อะไรคือปัญหาที่ได้รับการบรรเทาโดยไม่อนุญาตให้มีการประกาศฟังก์ชันที่ซ้อนกันใน Go?
Lambdas ทำงานตามที่คาดไว้: func main() { inc := func(x int) int { return x+1; } } อย่างไรก็ตามการประกาศต่อไปนี้ในการประกาศไม่ได้รับอนุญาต: func main() { func inc(x int) int { return x+1; } } ด้วยเหตุผลใดจึงไม่อนุญาตให้ใช้ฟังก์ชันซ้อนกัน

14
ไม่ได้ตั้งค่า GOBIN: ไม่สามารถเรียกใช้ go install
ฉันกำลังพยายามติดตั้งแพ็คเกจที่กำหนดเองสำหรับไฟล์ main.go ของฉัน อย่างไรก็ตามเมื่อฉันวิ่ง go install custom.go ฉันได้รับข้อผิดพลาดนี้ go install: no install location for .go files listed on command line (GOBIN not set) ฉันจะตั้งค่า GOBIN ได้อย่างไร?
86 go 

2
รันไทม์คืออะไร Gosched ทำอะไร?
ในเวอร์ชันก่อนเปิดตัว go 1.5 ของเว็บไซต์ Tour of Goมีโค้ดส่วนหนึ่งที่มีลักษณะเช่นนี้ package main import ( "fmt" "runtime" ) func say(s string) { for i := 0; i < 5; i++ { runtime.Gosched() fmt.Println(s) } } func main() { go say("world") say("hello") } ผลลัพธ์มีลักษณะดังนี้: hello world hello world hello world hello world hello สิ่งที่รบกวนใจคือเมื่อruntime.Gosched()ถูกลบโปรแกรมจะไม่พิมพ์คำว่า "world" …
86 concurrency  go 

5
int และ int64 ใน Go ต่างกันอย่างไร
ฉันมีสตริงที่มีจำนวนเต็ม (ซึ่งอ่านจากไฟล์) ฉันกำลังพยายามแปลงstringเป็นการintใช้strconv.ParseInt(). ParseIntต้องการให้ฉันระบุขนาดบิต (ขนาดบิต 0, 8, 16, 32 และ 64 สอดคล้องกับ int, int8, int16, int32 และ int64) จำนวนเต็มที่อ่านจากไฟล์มีขนาดเล็ก (เช่นควรพอดีกับ int ปกติ) อย่างไรก็ตามถ้าฉันส่งบิตขนาดเป็น 0 ฉันจะได้ผลลัพธ์เป็นประเภทint64(น่าจะเป็นเพราะฉันใช้ระบบปฏิบัติการ 64 บิต) เหตุใดจึงเกิดขึ้น ฉันจะรับ int ปกติได้อย่างไร (ถ้ามีคนลงไพรเมอร์ด่วนเมื่อไหร่และทำไมฉันควรใช้ int ประเภทต่างๆนั่นจะยอดเยี่ยมมาก!) แก้ไข: ฉันสามารถแปลง int64 เป็น int ปกติโดยใช้int([i64_var])ไฟล์. แต่ฉันยังไม่เข้าใจว่าทำไมถึงParseInt()ให้ int64 กับฉันเมื่อฉันขอบิตขนาดเป็น 0
86 go 


4
จะล้างแผนที่ใน Go ได้อย่างไร?
ฉันกำลังมองหาบางสิ่งบางอย่างเช่น C ++ ฟังก์ชั่นสำหรับชนิดดั้งเดิม.clear() map หรือฉันควรสร้างแผนที่ใหม่แทน? Update: ขอบคุณสำหรับคำตอบ จากการดูคำตอบฉันเพิ่งตระหนักว่าบางครั้งการสร้างแผนที่ใหม่อาจทำให้เกิดความไม่สอดคล้องกันบางอย่างที่เราไม่ต้องการ พิจารณาตัวอย่างต่อไปนี้: var a map[string]string var b map[string]string func main() { a = make(map[string]string) b=a a["hello"]="world" a = nil fmt.Println(b["hello"]) } ฉันหมายความว่าสิ่งนี้ยังคงแตกต่างจาก.clear()ฟังก์ชันใน c ++ ซึ่งจะล้างเนื้อหาในวัตถุ
86 go 

4
ประโยชน์ของการใช้ Nginx หน้าเว็บเซิร์ฟเวอร์สำหรับ Go คืออะไร? [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ ฉันกำลังเขียนบริการเว็บเซิร์ฟเวอร์ที่ส่งคืนข้อมูล JSON ซึ่งมีผู้ใช้จำนวนมาก ประโยชน์ของการใช้ Nginx ต่อหน้าเซิร์ฟเวอร์ของฉันเมื่อเทียบกับการใช้ go http server คืออะไร?

9
มีโปรแกรมแก้ไขจุดบกพร่องแบบโต้ตอบของ golang หรือไม่ [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน3 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ชื่อเรื่องนี้สรุปได้ค่อนข้างดี ฉันกำลังลองใช้ Go และฉันพลาดจริงๆที่จะสามารถกำหนดจุดพักและก้าวเข้า / ออก / ออกได้มากเท่าที่ฉันต้องการภายในสภาพแวดล้อมแบบโต้ตอบ ฉันรู้ว่าฉันสามารถใช้ gdb เพื่อ debug Go ได้ แต่มันค่อนข้างน่ารำคาญเมื่อเทียบกับการใช้ IDE ที่สามารถเสียบเข้ากับ gdb เพื่อทำการเบรกพอยต์ ฉันลองค้นหาหนึ่งรายการและพบเฉพาะปลั๊กอินหรือ IDE ขนาดเล็กที่มีการเน้นไวยากรณ์ แต่ไม่มีการดีบัก
85 debugging  go 

4
ความแตกต่างระหว่าง [] string และ… string ใน golang คืออะไร?
ในภาษา Go []string เป็นสตริงอาร์เรย์ และเรายังใช้...stringเป็นพารามิเตอร์ อะไรคือความแตกต่าง? นิยามฟังก์ชัน: func f(args ...string) {} ฉันสามารถเรียกใช้ฟังก์ชันนี้ได้หรือไม่? args := []string{"a", "b"} f(args)
85 string  go 

2
กลับตัวชี้ไปที่โครงสร้างภายใน
ฉันเห็นตัวอย่างโค้ดที่มีโครงสร้างดังนี้: type point struct { x, y int } func newPoint() *point { return &point{10, 20} } ฉันมีพื้นหลัง C ++ และดูเหมือนว่ามีข้อผิดพลาดสำหรับฉัน อะไรคือความหมายของโครงสร้างดังกล่าว? มีการจัดสรรจุดใหม่บนสแต็กหรือฮีปหรือไม่?
85 go 

1
วิธีการตั้งค่าตัวแปรสภาพแวดล้อม GOPRIVATE
ฉันเริ่มทำงานในGoโครงการและใช้โมดูลส่วนตัวบางส่วนจาก repos ส่วนตัว Github และเมื่อใดก็ตามที่ฉันพยายามเรียกใช้go run main.goให้410 Goneข้อผิดพลาดด้านล่าง: การยืนยัน github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod: github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod: อ่านhttps: //sum.golang org/lookup/github.com/!repoURL/go-proto@v2.86.0+incompatible : 410 Gone ฉันสามารถโคลน repo ส่วนตัวจากเทอร์มินัลได้อย่างง่ายดายซึ่งหมายความว่าsshคีย์ของฉันได้รับการกำหนดค่าอย่างถูกต้อง ฉันอ่านที่นี่ว่าฉันต้องตั้งค่าGOPRIVATEตัวแปรสภาพแวดล้อม แต่ฉันไม่แน่ใจว่าจะทำอย่างไร ทุกคนสามารถตอบหรือชี้ไปที่บทช่วยสอนที่เกี่ยวข้องได้หรือไม่ ไป: v1.13, OS: macOS Mojave

1
"เส้นทางร้อน" หมายความว่าอย่างไรในบริบทของการซิงค์เมื่อ?
เวอร์ชั่น go: 1.13.4 ในการซิงค์ซอร์สโค้ด / Once.goความคิดเห็นต่อไปนี้กล่าวถึง "เส้นทางร้อน": type Once struct { // done indicates whether the action has been performed. // It is first in the struct because it is used in the hot path. // The hot path is inlined at every call site. // Placing done first allows …
14 go 

3
พา ธ โมดูลที่มีรูปแบบไม่ถูกต้อง“ xxxx / xxxx / uuid” จุดขาดหายไปในองค์ประกอบพา ธ แรกเมื่อย้ายข้อมูลจาก GOPATH จาก dep ไปเป็น mod
รุ่น $ go 1.13.3 ฉันมีโครงสร้างโฟลเดอร์ดังนี้: GOPATH +---src +--- my-api-server +--- my-auth-server +--- main.go +--- my-utils +--- uuid +--- uuid.go my-auth-serverใช้my-api-server/my-utils/uuidเป็นที่พึ่งพา ตอนนี้เมื่อฉันใช้ระบบโมดูลที่ใช้ GOPATH สิ่งนี้ใช้ได้ดี แต่เมื่อใช้ไปโมดูลเมื่อฉันทำงานgo run main.goในmy-auth-serverมันกลับข้อผิดพลาด: build command-line-arguments: cannot load my-api-server/my-utils/uuid: malformed module path "my-api-server/my-utils/uuid": missing dot in first path element ความคิดวิธีการแก้ปัญหานี้?
12 go  go-modules 

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