天天看點

#指尖人生#java開發工程師如何快速轉go開發工程師

1.淺談java跟go的差別

1.1什麼是java

#指尖人生#java開發工程師如何快速轉go開發工程師
  • ​Java是一種用于一般用途的計算機程式設計語言,它是基于類的,并發的和面向對象的。Java專門設計為包含很少的實作依賴項。Java應用程式在JVM(Java虛拟機)上運作。它是當今最着名和最着名的程式設計語言之一。​
  • ​Java是一種用于為多個平台開發軟體的程式設計語言。Java應用程式上的編譯代碼或位元組碼可以在大多數作業系統上運作,包括Linux,Mac作業系統和Linux。Java的大部分文法都源自C ++和C語言。​

簡單說,java就是一門面向對象的進階程式設計語言,面向web開發非常的友善。架構比較流行的有spring,spring boot ,

spring cloud等等。

1.2什麼是go

#指尖人生#java開發工程師如何快速轉go開發工程師
簡單說,go也是一種程式設計語言,文法類似C語言,但是具有垃圾回收機制,​與C++相比,Go并不包括如​​枚舉​​​、​​異常處理​​​、​​繼承​​​、​​泛型​​​、​​斷言​​​、​​虛函數​​​等功能,但增加了 切片(Slice) 型、并發、管道、垃圾回收、接口(Interface)等特性的語言級支援。​

​go多用于k8s雲原生程式設計,以及一些高并發處理的程式設計。​

2.如何學習go程式設計

2.1go語言的學習過程

個人推薦三天看完這個go基礎教程 :​​ go語言教程​​

#指尖人生#java開發工程師如何快速轉go開發工程師

​怎麼學習基礎文法呢?​

  • 首先學習如何定義變量
  • 然後學習如何運作資料結構
  • 然後學習如何寫函數
  • 最後了解golang獨有特性

2.2go的特點

​并發​

​Go 作為一門語言緻力于使事情簡單化。它并未引入很多新概念,而是聚焦于打造一門簡單的語言,它使用起來異常快速并且簡單。其唯一的創新之處是 goroutines 和通道。Goroutines 是 Go 面向線程的輕量級方法,而通道是 goroutines 之間通信的優先方式。​

​​編譯速度​​

​目前我們使用 Go 編寫的最大微服務的編譯時間隻需 6 秒。相較于 Java 和 C++呆滞的編譯速度,Go 的快速編譯時間是一個主要的效率優勢。我熱愛擊劍,但是當我依然記得代碼應該做什麼之時,事情已經完成就更好了。​

​3.go跟java的差別​

​​go語言和Java之間的差別​​

​1、​函數重載​​

​Go上不允許函數重載,必須具有方法和函數的唯一名稱。java允許函數重載。​

​​2、速度​​

​go的速度比java快​

​​3、多态​​

​Java預設允許多态。而,Go沒有。​

​​4、路由配置​​

​Go語言使用HTTP協定進行路由配置;而java使用Akka.routing.ConsistentHashingRouter和Akka.routing.ScatterGatherFirstCompletedRouter進行路由配置。​

​​5、可擴充性​​

​Go代碼可以自動擴充到多個核心;而,Java并不總是具有足夠的可擴充性。​

​​6、繼承​​

​Go語言的繼承通過匿名組合完成:基類以Struct的方式定義,子類隻需要把基類作為成員放在子類的定義中,支援多繼承。​

​4.個人了解​

​小編個人覺得程式設計語言大同小異,隻不過開發起來各有優缺點,小編剛畢業的時候是一名C++開發工程師,C++是一門面向對象的程式設計語言。用起來比C友善很多,但是跟java相比,缺少了很多工具類,很多函數的實作都要自己去寫,而且不能跨平台,但是C++也有自己的優點呀,那就是運作速度很快,很多資料上的處理,比java快很多。缺點就是linux跟windows不同版本函數之間還是有一點點差別,也沒有垃圾回收機制,自己申請的記憶體需要自己手動的釋放。不過寫久了以後,有了自己的封裝庫,寫背景系統也是挺友善的。​

​後來小編離職了以後來到了一家新公司,這是一家新成立的事業機關,該公司做的項目是偏向雲平台的,剛開始做是用的java開發,給前端界面寫背景接口,因為小編是前端開發幾乎一竅不通,剛來的時候連rest接口是啥都不知道,更不用說nginx是什麼了。但是小編花了一周時間學習java文法規範。也不懂spring是啥,于是github上拉了一個項目,看了看源碼。了解了下,前後端互動流程。​

#指尖人生#java開發工程師如何快速轉go開發工程師