Go 語言很好很強大,但我有幾個問題想吐槽

Go 是一門非常不錯的編程語言。然而,我在公司的Slack 編程頻道中對Go 的抱怨卻越來越多(猜到我是做啥了的吧?),因此我認為有必要把這些吐槽寫下來並放在這裡,這樣當人們問我抱怨什麼時,我給他們一個鏈接就行了。 先聲明一下,在過去的一年裡,我大量地使用Go語言開發命令行應用程序、scc、lc和API。其中既有供客戶端調用的大規模API,也有即將在https://searchcode.com/使用的語法高亮顯示器。 我這些批評全部是針對Go 語言的。但是,我對使用過的每種語言都有不滿。我非常贊同下面的話: “世界上只有兩種語言:人們抱怨的語言和沒人使用的語言。” —— Bjarne Stroustrup 1 不支持函數式編程 我並不是一個函數式編程狂熱者。說到Lisp 語言,我首先想到的是語言障礙。 這可能是Go 語言最大的痛點了。與大部分人不同,我不希望Go 支持泛型,因為它會為多數Go 項目帶來不必要的複雜性。我希望Go 語言支持適用於內置切片和Map 的函數式方法。切片和Map 具有通用性,並且可以容納任何類型,從這個意義上講,它們已經非常神奇。在Go 語言中只有利用接口才能實現類似效果,但這樣一來將喪失安全性和速度。 例如,請考慮下面的問題。 給定兩個字符串切片,找出二者都包含的字符串,並將其放入新的切片以備後用。 複製代碼 existsBoth := []string{} for _, first := range firstSlice { for _, second := range secondSlice { if first == second { existsBoth = append(existsBoth, proxy) break } } […]