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

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

8
“ _,” (เครื่องหมายจุลภาคขีดล่าง) ในการประกาศ Go คืออะไร?
และดูเหมือนฉันจะไม่เข้าใจการประกาศตัวแปรประเภทนี้: _, prs := m["example"] " _," กำลังทำอะไรกันแน่และเหตุใดพวกเขาจึงประกาศตัวแปรเช่นนี้แทนที่จะเป็น prs := m["example"] (ฉันพบว่าเป็นส่วนหนึ่งของGo by Example: Maps )
103 variables  go 

4
วิธีใดที่ดีที่สุดในการรวมทรัพยากรแบบคงที่ในโปรแกรม Go [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการเมื่อปีที่แล้ว ปรับปรุงคำถามนี้ ฉันกำลังทำงานเกี่ยวกับเว็บแอปพลิเคชันขนาดเล็กใน Go ซึ่งมีไว้เพื่อใช้เป็นเครื่องมือในเครื่องของผู้พัฒนาเพื่อช่วยแก้ไขข้อบกพร่องของแอปพลิเคชัน / บริการบนเว็บ อินเทอร์เฟซไปยังโปรแกรมเป็นหน้าเว็บที่ไม่เพียง แต่รวมถึง HTML เท่านั้น แต่ยังรวมถึง JavaScript (สำหรับฟังก์ชันการทำงาน) รูปภาพและ CSS (สำหรับการจัดรูปแบบ) ฉันกำลังวางแผนที่จะเปิดแอปพลิเคชันนี้ดังนั้นผู้ใช้ควรจะสามารถเรียกใช้ Makefile ได้และทรัพยากรทั้งหมดจะไปที่ที่พวกเขาต้องการ อย่างไรก็ตามฉันต้องการเพียงแค่แจกจ่ายไฟล์ปฏิบัติการที่มีไฟล์ / การอ้างอิงให้น้อยที่สุด มีวิธีที่ดีในการรวม HTML / CSS / JS เข้ากับไฟล์ปฏิบัติการหรือไม่ดังนั้นผู้ใช้จึงต้องดาวน์โหลดและกังวลเกี่ยวกับไฟล์เดียวหรือไม่? ตอนนี้ในแอปของฉันการให้บริการไฟล์คงที่จะมีลักษณะดังนี้: // called via http.ListenAndServe func switchboard(w http.ResponseWriter, r *http.Request) { // snipped dynamic routing... …
102 go 


4
อะไรคือจุดที่มีตัวชี้ใน Go?
ฉันรู้ว่าพอยน์เตอร์ใน Go อนุญาตให้มีการกลายพันธุ์ของอาร์กิวเมนต์ของฟังก์ชัน แต่จะไม่ง่ายไปกว่านี้หรือไม่หากพวกเขาใช้การอ้างอิงเพียงอย่างเดียว (โดยมี const ที่เหมาะสมหรือคุณสมบัติที่เปลี่ยนแปลงได้) ตอนนี้เรามีตัวชี้และสำหรับบางประเภทในตัวเช่นแผนที่และช่องสัญญาณโดยปริยายโดยการอ้างอิง ฉันพลาดอะไรไปหรือเป็นคำแนะนำใน Go เป็นเพียงภาวะแทรกซ้อนที่ไม่จำเป็น?
102 pointers  go 

5
วิธีเปรียบเทียบวันที่ / เวลา
มีตัวเลือกในการเปรียบเทียบวันที่ใน Go หรือไม่? ฉันต้องจัดเรียงข้อมูลตามวันที่และเวลาโดยอิสระ ดังนั้นฉันอาจอนุญาตให้ออบเจ็กต์ที่เกิดขึ้นภายในช่วงวันที่ตราบเท่าที่มันเกิดขึ้นในช่วงเวลาด้วย ในโมเดลนี้ฉันไม่เพียงแค่เลือกวันที่ที่เก่าที่สุดเวลาที่อายุน้อยที่สุด / วันที่ล่าสุดเวลาล่าสุดและ Unix () วินาทีมาเปรียบเทียบกัน ฉันขอขอบคุณสำหรับคำแนะนำใด ๆ ในท้ายที่สุดฉันเขียนโมดูลเปรียบเทียบสตริงแยกวิเคราะห์เวลาเพื่อตรวจสอบว่าเวลาอยู่ในช่วงหรือไม่ อย่างไรก็ตามนี่ไม่ใช่เรื่องที่ดีนัก ฉันมีปัญหาที่อ้าปากค้าง ฉันจะโพสต์ที่นี่เพื่อความสนุกสนาน แต่ฉันหวังว่าจะมีวิธีเปรียบเทียบเวลาที่ดีกว่านี้ package main import ( "strconv" "strings" ) func tryIndex(arr []string, index int, def string) string { if index <= len(arr)-1 { return arr[index] } return def } /* * Takes two strings …

6
ติดตั้ง go with brew และรัน gotour
ฉันติดตามhttp://tour.golang.org/จนถึงขั้นตอนที่สามซึ่งบอกคุณว่าคุณสามารถติดตั้ง gotour ในระบบของคุณได้ หลังจากนั้นฉันได้ติดตั้ง go language ด้วยการชงโดย: brew install hg brew install go จากนั้นฉันดาวน์โหลด gotour โดย: go get code.google.com/p/go-tour/gotour เมื่อฉันพยายามเปิด gotour มันไม่รู้จักคำสั่ง: $ gotour -bash: gotour: command not found และ $ go gotour และ $ ./gotour ฉันจึงพยายามดูเส้นทางไปและมันว่างเปล่า echo $GOPATH ดังนั้นฉันจึงกำหนด GOPATH: GOPATH=/usr/local/Cellar/go/1.0.2/src/pkg/code.google.com/p/ export GOPATH ตอนนี้ฉันสามารถเรียกใช้ gotour ได้โดยการวิ่ง ./gotour แต่ฉันไม่มั่นใจเกี่ยวกับสภาพแวดล้อมการเดินทางของฉัน .. …
101 macos  install  go  homebrew 


8
วิธีปิดใช้งานข้อผิดพลาดการนำเข้าที่ไม่ได้ใช้ Golang
โดยค่าเริ่มต้น Go ถือว่าการนำเข้าที่ไม่ได้ใช้เป็นข้อผิดพลาดบังคับให้คุณลบการนำเข้า ฉันต้องการทราบว่ามีความหวังที่จะเปลี่ยนพฤติกรรมนี้หรือไม่เช่นลดการเตือน ฉันพบว่าปัญหานี้น่ารำคาญมากทำให้ฉันไม่สนุกกับการเขียนโค้ดใน Go ตัวอย่างเช่นฉันกำลังทดสอบโค้ดบางอย่างโดยปิดการใช้งานเซ็กเมนต์ / ฟังก์ชัน ฟังก์ชันบางอย่างจาก lib ไม่ได้ใช้อีกต่อไป (เช่น fmt ข้อผิดพลาดอะไรก็ตาม) แต่ฉันจะต้องเปิดใช้งานฟังก์ชันนี้อีกครั้งหลังจากการทดสอบเล็กน้อย ตอนนี้โปรแกรมจะไม่คอมไพล์เว้นแต่ฉันจะลบการนำเข้าเหล่านั้นและอีกไม่กี่นาทีต่อมาฉันต้องนำเข้า lib อีกครั้ง ฉันกำลังทำขั้นตอนนี้ซ้ำแล้วซ้ำเล่าเมื่อพัฒนาโปรแกรม GAE
101 go 

4
จะนำเข้าแพ็คเกจท้องถิ่นได้อย่างไร?
ฉันเพิ่งเริ่มใช้งานโค้ดตัวอย่างที่ต้องการแปลเป็นภาษาท้องถิ่น ในmain.goคำสั่งนำเข้าดั้งเดิมคือ: import ( "log" "net/http" "github.com/foo/bar/myapp/common" "github.com/foo/bar/myapp/routers" ) ตอนนี้ฉันมีcommonและroutersแพคเกจใน/home/me/go/src/myapp ดังนั้นฉันจึงแปลงคำสั่งนำเข้าเป็น: import ( "log" "net/http" "./common" "./routers" ) แต่เมื่อฉันเรียกใช้go install myappฉันได้รับข้อผิดพลาดเหล่านี้: can't load package: /home/me/go/src/myapp/main.go:7:3: local import "./common" in non-local package นอกจากนี้เมื่อฉันใช้commonและroutersแทน./commonและ./routersในคำสั่งนำเข้าฉันจะได้รับ: myapp/main.go:7:3: cannot find package "common" in any of: /usr/local/go/src/common (from $GOROOT) /home/me/go/src/common (from $GOPATH) myapp/main.go:8:2: cannot find package …
101 go 

10
แปลงอินเทอร์เฟซ {} เป็น int
ฉันกำลังพยายามหาค่าจาก JSON และแคสต์เป็น int แต่ไม่ได้ผลและฉันไม่รู้ว่าจะทำอย่างไรให้ถูกต้อง นี่คือข้อความแสดงข้อผิดพลาด: ...cannot convert val (type interface {}) to type int: need type assertion และรหัส: var f interface{} err = json.Unmarshal([]byte(jsonStr), &f) if err != nil { utility.CreateErrorResponse(w, "Error: failed to parse JSON data.") return } m := f.(map[string]interface{}) val, ok := m["area_id"] if !ok { …
100 go 

3
แปลง Go map เป็น json
ฉันพยายามแปลงแผนที่ Go ของฉันเป็นสตริง json ด้วยencoding/jsonMarshal แต่ส่งผลให้สตริงว่างเปล่า นี่คือรหัสของฉัน: package main import ( "encoding/json" "fmt" ) type Foo struct { Number int `json:"number"` Title string `json:"title"` } func main() { datas := make(map[int]Foo) for i := 0; i < 10; i++ { datas[i] = Foo{Number: 1, Title: "test"} } jsonString, _ := …
100 json  go 

4
Go: panic: ข้อผิดพลาดรันไทม์: ที่อยู่หน่วยความจำไม่ถูกต้องหรือไม่มีการอ้างอิงศูนย์
เมื่อเรียกใช้โปรแกรม Go ของฉันมันจะตื่นตระหนกและส่งคืนสิ่งต่อไปนี้: panic: runtime error: invalid memory address or nil pointer dereference [signal 0xb code=0x1 addr=0x38 pc=0x26df] goroutine 1 [running]: main.getBody(0x1cdcd4, 0xf800000004, 0x1f2b44, 0x23, 0xf84005c800, ...) /Users/matt/Dropbox/code/go/scripts/cron/fido.go:65 +0x2bb main.getToken(0xf84005c7e0, 0x10) /Users/matt/Dropbox/code/go/scripts/cron/fido.go:140 +0x156 main.main() /Users/matt/Dropbox/code/go/scripts/cron/fido.go:178 +0x61 goroutine 2 [syscall]: created by runtime.main /usr/local/Cellar/go/1.0.3/src/pkg/runtime/proc.c:221 goroutine 3 [syscall]: syscall.Syscall6() /usr/local/Cellar/go/1.0.3/src/pkg/syscall/asm_darwin_amd64.s:38 +0x5 syscall.kevent(0x6, …
99 go 

3
ช่วงบนอินเทอร์เฟซ {} ซึ่งจัดเก็บชิ้นส่วน
t interface{}รับสถานการณ์ที่คุณมีฟังก์ชั่นที่ยอมรับ หากพิจารณาแล้วว่าtเป็นชิ้นฉันจะทำrangeอย่างไร func main() { data := []string{"one","two","three"} test(data) moredata := []int{1,2,3} test(data) } func test(t interface{}) { switch reflect.TypeOf(t).Kind() { case reflect.Slice: // how do I iterate here? for _,value := range t { fmt.Println(value) } } } ไปที่ Playground ตัวอย่าง: http://play.golang.org/p/DNldAlNShB

3
ค่าเริ่มต้นในวิธีการของ Go
มีวิธีระบุค่าเริ่มต้นในฟังก์ชันของ Go หรือไม่? ฉันพยายามค้นหาสิ่งนี้ในเอกสาร แต่ไม่พบสิ่งที่ระบุว่าเป็นไปได้เลย func SaySomething(i string = "Hello")(string){ ... }
99 go 

2
เหตุใดฉันจึงพิมพ์ฟังก์ชันนามแฝงและใช้งานได้โดยไม่ต้องแคสต์
ใน Go หากคุณกำหนดประเภทใหม่เช่น: type MyInt int จากนั้นคุณไม่สามารถส่งผ่านMyIntไปยังฟังก์ชันที่คาดหวังว่าจะเป็น int หรือในทางกลับกัน: func test(i MyInt) { //do something with i } func main() { anInt := 0 test(anInt) //doesn't work, int is not of type MyInt } ละเอียด. แต่เหตุใดจึงใช้ฟังก์ชันเดียวกันนี้ไม่ได้ เช่น: type MyFunc func(i int) func (m MyFunc) Run(i int) { m(i) } func …
98 types  casting  go 

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