6
พิมพ์การแปลงส่วนของอินเทอร์เฟซ
ฉันอยากรู้ว่าทำไมไปโดยปริยายกวนแปลง[]Tไป[]interface{}เมื่อมันโดยปริยายจะแปลงไปT interface{}มีบางอย่างที่ไม่สำคัญกับการแปลงนี้ที่ฉันขาดไปหรือไม่? ตัวอย่าง: func foo([]interface{}) { /* do something */ } func main() { var a []string = []string{"hello", "world"} foo(a) } go build บ่น ไม่สามารถใช้สตริง (ประเภท []) เป็นประเภท [] อินเตอร์เฟส {} ในอาร์กิวเมนต์ของฟังก์ชัน และถ้าฉันพยายามทำมันอย่างชัดเจนสิ่งเดียวกัน: b := []interface{}(a)บ่น ไม่สามารถแปลงสตริง (พิมพ์ []) เป็นพิมพ์ [] อินเตอร์เฟส {} ดังนั้นทุกครั้งที่ฉันจำเป็นต้องทำการแปลงนี้ (ซึ่งดูเหมือนจะเกิดขึ้นมาก) ฉันได้ทำสิ่งนี้: b = make([]interface{}, …
194
go
go-reflect
go-interface