欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

CC++的人轉Go都說很爽,Java轉Go的人,覺得有時候寫的很別扭,為啥?

錢多多2年前13瀏覽0評論

Go和Java都是C系語言,語法方面,存在很多相似的地方。Go語言從C語言繼承了很多,同時也拋棄了不少,改進了不少。

Go從C繼承了哪些重要特性,同時改進了哪些?

Go跟C語言一樣,語法足夠簡單。一些基礎的語法,跟其他C系語言類似,從C繼承了下來。和其他很多C系語言不一樣的地方是,Go繼承了struct,而且,不像C++/Java,還額外提供class。所以C語言的人,寫Go會有很親切感。更重要的是,Go對于C語言做了很多改進,而且這些改進很多由于歷史原因導致的,作為一門全新的語言,沒有歷史包袱,完全可以在設計上做出改進。主要的改進有:1.跟C一樣有指針,但不允許進行指針運算,提升了安全性和易用性,很多C語言的開發者,對指針是有點頭疼的,但接觸Go,會發現很容易使用指針;2.有垃圾回收機制,從繁瑣易錯的內存分配和釋放中解脫出來;3.在struct(類型)的基礎上,引入方法的概念,相比C語言更利于結構化和管理;4.更高級的數據結構原始支持,比如動態數組(slice)、string、map等;5.豐富的標準庫支持,比如Go對于網絡編程,標準庫有了很大的支持,寫起來會很簡單,相對來說C使用第三方庫,易用性也差一些;6.一定程度上支持面向對象編程;7.強大的工具鏈,編譯速度超級快;8.import機制改進;9.類型定義避免歧義,比如`varp,q*int`;10.更強大的IDE支持;11.更強大、易用的并發支持;...以上種種,會讓C語言的開發者愛上Go語言。對于C++,因為其復雜性,我想面對Go這樣簡單、性能不錯、C系的語言,應該沒有免疫力吧~

Java為什么有時候會覺得Go別扭?

Java雖然也是C系語言,但更多是面向對象的功能。很多設計模式的書,都是用Java語言來描述的。而Go語言,并非純面向對象,只是一定程度上,支持了部分面向對象的特性,不少面向對象的功能缺失,這會讓習慣Java的開發者感覺別扭。1.沒有類型層次2.接口隱式實現3.沒有真正意義的繼承,因此也沒有基于類型繼承的多態4.沒有方法重載,而且還沒有泛型5.可見性問題6.沒有Spring這樣一統天下的框架...另外,Go里面的一些特性,Java開發者可能也不太習慣,比如:有指針、類型足夠細分(比如各種int)等。我認為還有一個很重要的是,Go相對于Java,對計算機底層基礎的知識要求會更高,這會讓一些人感覺不適應。

但我還是要說一句,Java開發者們,Go還是值得你學習的。這里附上之前回復的一個問答:《如何優雅得向Java程序員介紹go語言?》

https://www.wukong.com/question/6681852965965267212/


總結

其實很多東西還是習慣問題,但有時候,我們需要嘗試打破習慣,用另外的視角看待這個世界。對于編程語言來說,我們在使用一門語言時,要慢慢學會用該語言的方式來思考、解決問題,雖然這個過程可能是比較痛苦,但這是鍛煉自己思維、提升自己很好地方式。