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

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

5
แปลง float64 เป็น int ใน Go
วิธีการแปลง float64 เป็น int ใน Go? ฉันรู้ว่าstrconvแพคเกจสามารถใช้เพื่อแปลงอะไรก็ได้เป็นหรือจากสตริง แต่ไม่สามารถใช้ระหว่างประเภทข้อมูลที่หนึ่งไม่ใช่สตริง ฉันรู้ว่าฉันสามารถใช้fmt.Sprintfเพื่อแปลงอะไรก็ได้เป็นสตริงจากนั้นstrconvให้เป็นประเภทข้อมูลที่ฉันต้องการ แต่การแปลงเพิ่มเติมนี้ดูงุ่มง่ามเล็กน้อย - มีวิธีที่ดีกว่านี้ไหมในการทำเช่นนี้
125 go 



4
Golang ทดสอบในไดเรกทอรีย่อย
ฉันต้องการสร้างแพ็คเกจใน Go พร้อมการทดสอบและตัวอย่างสำหรับแพ็กเกจเป็นไดเร็กทอรีย่อยเพื่อให้พื้นที่ทำงานสะอาดขึ้น เป็นไปได้หรือไม่และถ้าเป็นเช่นนั้นได้อย่างไร เอกสารทั้งหมดจะวางโค้ดการทดสอบไว้ที่เดียวกับโค้ดอื่นเสมอซึ่งจะดีกว่าในทางใดทางหนึ่งหรือเพียงแค่แบบแผน?
123 build  go 

6
เหตุใดฉันจึงไม่สามารถทำสำเนาชิ้นส่วนด้วย `copy ()` ได้?
ฉันต้องการทำสำเนาชิ้นส่วนใน Go และอ่านเอกสารมีฟังก์ชั่นการคัดลอกให้ฉันใช้ ฟังก์ชันคัดลอกในตัวจะคัดลอกองค์ประกอบจากชิ้นส่วนต้นทางไปยังชิ้นส่วนปลายทาง (ในกรณีพิเศษมันจะคัดลอกไบต์จากสตริงไปยังส่วนของไบต์ด้วย) ต้นทางและปลายทางอาจทับซ้อนกัน Copy ส่งคืนจำนวนองค์ประกอบที่คัดลอกซึ่งจะเป็นค่าต่ำสุดของ len (src) และ len (dst) แต่เมื่อฉันทำ: arr := []int{1, 2, 3} tmp := []int{} copy(tmp, arr) fmt.Println(tmp) fmt.Println(arr) ของฉันtmpว่างเปล่าเหมือนเดิม (ฉันพยายามใช้ด้วยซ้ำarr, tmp): [] [1 2 3] คุณสามารถตรวจสอบที่ไปสนามเด็กเล่น เหตุใดฉันจึงไม่สามารถคัดลอกชิ้นส่วนได้?
122 go  slice 

1
“ ใช้เป็นค่า” ในการเรียกใช้ฟังก์ชัน
อะไรคือวิธีที่เหมาะสมในการเรียกใช้ฟังก์ชันเมื่อประเมินค่าในคำสั่งเงื่อนไข package main import "fmt" func main(){ if sumThis(1,2) > sumThis(3,4){ fmt.Println("test") } else { fmt.Println("derp") } } func sumThis(a, b int){ return a+b } สิ่งนี้ส่งคืนข้อผิดพลาด: ./test4.go:4: sumThis(1, 2) used as value ./test4.go:4: sumThis(3, 4) used as value ./test4.go:11: too many arguments to return คุณจะเขียนสิ่งนี้ใน Go อย่างไร?
122 go 

8
Unmarshaling อ็อบเจ็กต์ JSON ที่ซ้อนกัน
มีไม่กี่คำถามในหัวข้อแต่ไม่มีพวกเขาดูเหมือนจะครอบคลุมกรณีของฉันจึงฉันกำลังสร้างใหม่ ฉันมี JSON ดังต่อไปนี้: {"foo":{ "bar": "1", "baz": "2" }, "more": "text"} มีวิธีที่จะ unmarshal คุณสมบัติแถบที่ซ้อนกันและกำหนดให้กับคุณสมบัติของโครงสร้างโดยตรงโดยไม่ต้องสร้างโครงสร้างที่ซ้อนกันหรือไม่? วิธีแก้ปัญหาที่ฉันกำลังใช้อยู่ตอนนี้มีดังต่อไปนี้: type Foo struct { More String `json:"more"` Foo struct { Bar string `json:"bar"` Baz string `json:"baz"` } `json:"foo"` // FooBar string `json:"foo.bar"` } นี่เป็นเวอร์ชันที่เรียบง่ายโปรดละเว้นการใช้คำฟุ่มเฟือย อย่างที่คุณเห็นฉันต้องการแยกวิเคราะห์และกำหนดค่าให้ // FooBar string `json:"foo.bar"` ฉันเคยเห็นคนใช้แผนที่ แต่นั่นไม่ใช่กรณีของฉัน โดยพื้นฐานแล้วฉันไม่สนใจเนื้อหาของfoo(ซึ่งเป็นวัตถุขนาดใหญ่) ยกเว้นองค์ประกอบเฉพาะบางอย่าง แนวทางที่ถูกต้องในกรณีนี้คืออะไร? …
122 json  go 

7
จะกำหนดประเภท "จริง" ของอินเทอร์เฟซ {} ค่าได้อย่างไร
ฉันไม่พบแหล่งข้อมูลที่ดีสำหรับการใช้interface{}ประเภท ตัวอย่างเช่น package main import "fmt" func weirdFunc(i int) interface{} { if i == 0 { return "zero" } return i } func main() { var i = 5 var w = weirdFunc(5) // this example works! if tmp, ok := w.(int); ok { i += tmp } fmt.Println("i =", …

4
การกำหนดค่าเว็บแอปพลิเคชันการผลิต Golang
สำหรับผู้ที่ใช้ Go แบ็กเอนด์ในการผลิต: สแต็ก / การกำหนดค่าของคุณสำหรับการเรียกใช้แอปพลิเคชันเว็บ Go คืออะไร? ฉันไม่ค่อยเห็นหัวข้อนี้มากนักนอกจากคนที่ใช้แพ็คเกจ net / http ของไลบรารีมาตรฐานเพื่อให้เซิร์ฟเวอร์ทำงานต่อไป ฉันอ่านโดยใช้ Nginx เพื่อส่งคำขอไปยังเซิร์ฟเวอร์ Go - nginx with Go สิ่งนี้ดูเหมือนจะเปราะบางสำหรับฉัน ตัวอย่างเช่นเซิร์ฟเวอร์จะไม่รีสตาร์ทโดยอัตโนมัติหากเครื่องรีสตาร์ท (โดยไม่มีสคริปต์การกำหนดค่าเพิ่มเติม) มีการตั้งค่าการผลิตที่มั่นคงกว่านี้หรือไม่? นอกเหนือจากความตั้งใจของฉัน - ฉันกำลังวางแผนที่จะใช้เซิร์ฟเวอร์แบ็กเอนด์ Go ที่ขับเคลื่อนด้วย REST สำหรับโปรเจ็กต์ถัดไปของฉันและต้องการให้แน่ใจว่า Go จะทำงานได้จริงสำหรับการเปิดตัวโปรเจ็กต์จริงก่อนที่ฉันจะลงทุนกับมันมากเกินไป
120 web  go  production 

7
แนวทางที่ถูกต้องในการบันทึกทั่วโลกใน Golang
รูปแบบสำหรับการเข้าสู่ระบบแอปพลิเคชัน Go คืออะไร? ถ้าฉันมีบอกว่า 5 goroutines ที่ฉันต้องออกจากระบบฉันควรจะ ... สร้างซิงเกิ้ลlog.Loggerและส่งต่อ? ผ่านตัวชี้ไปที่log.Logger? แต่ละ goroutine หรือฟังก์ชันควรสร้างคนตัดไม้หรือไม่? ฉันควรสร้างคนตัดไม้เป็นตัวแปรส่วนกลางหรือไม่
120 logging  go 

2
จุดสามจุด“ ./…” หมายถึงอะไรในการเรียกใช้บรรทัดคำสั่ง Go?
หากคุณเรียกใช้การทดสอบ Golang บน Travis CI มันจะดาวน์โหลดการอ้างอิงทั้งหมดของคุณด้วยจุดสามจุด : go get -d -v ./... && go build -v ./... อะไร./...บ่งบอกหรือขยายไปที่นั่น? ฉันได้ทำการวิจัยมาบ้างแล้ว แต่ดูเหมือนว่าจะไม่ใช่อนุสัญญา Unix
120 go 




3
ประเภทข้อมูล Pair / tuple ใน Go
ในขณะที่ออกกำลังกายครั้งสุดท้ายของ Tour of Goฉันตัดสินใจว่าฉันต้องการคิวคู่( string, int) ง่ายพอ: type job struct { url string depth int } queue := make(chan job) queue <- job{url, depth} แต่สิ่งนี้ทำให้ฉันคิด: มีประเภทข้อมูลคู่ / ทูเปิลในตัวใน Go หรือไม่? มีการสนับสนุนสำหรับการส่งคืนค่าหลายค่าจากฟังก์ชัน แต่ AFAICT สิ่งที่มีค่าหลายค่าที่สร้างขึ้นไม่ใช่พลเมืองชั้นหนึ่งในระบบประเภทของ Go เป็นอย่างนั้นหรือ? สำหรับส่วน "คุณได้ลองอะไรบ้าง" ไวยากรณ์ที่ชัดเจน (จาก POV ของโปรแกรมเมอร์ Python) queue := make(chan (string, int)) ไม่ได้ผล
118 go  tuples 

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