JAVA轉go系列之 語言基礎
和JAVA語言一樣Go語言也是由多個標記組成,可以是關鍵字,識別符號,常量,字串等等
java語言
Go
go語言的fmt包就和Java的System一樣都有它強大的功能屬於自帶的包這裡要說一下,System是一個final修飾的類,而fmt是一個包,System點出來的都是靜態的,而Go的fmt是一個包名,go是面向函式(其實也不完全面向函式,我這裡先這樣理解),還有一點go的包的檔案都可以直接修改,java就不行了。初學的時候覺得挺有意思的,覺得程式就因當這樣,程式設計師因當能主導所有的程式碼,java依賴的包不能修改,除非copy整個的程式碼然後打包
基礎語法說完了說一說資料型別吧,有個大佬說過 程式=資料結構+演算法,可以見得資料結構在程式中是多麼的重要,和java類似go的資料型別也分為內建資料型別和引用資料型別
java的內建資料型別 java有8個基本資料型別也就是內建資料型別,這些資料型別是儲存在棧中,所以使用這類資料型別的時候是使用的值傳遞,也就是在使用過程中是不會對原來的資料產生影響。java為這些資料型別都提供了包裝類,就是為了在引數產地過程中可以使用地址傳遞
Go也有提供內建資料型別基本和java差不多,需要注意的是go語言在函式之間傳遞變數時,總是以值傳遞。這點跟java不同,java只要傳遞的是引用型別,就是地址傳遞。go如果需要使用地址傳遞就要顯示宣告一下
變數來源於數學,是計算機語言中能儲存計算結果或能表示值抽象概念。變數可以通過變數名訪問。
Java 變數宣告
在Java語言中,所有的變數在使用前必須宣告。宣告變數的基本格式如下:
type identifier [ = value][, identifier [= value] ...] ;
Go 語言變數名由字母、數字、下劃線組成,其中首個字母不能為數字。
在java中變數的可見性是由修飾符決定的,Go中的可見性是由變數的首字母大小寫來控制的,相比java少寫了很多程式碼。
在java中如果一個變數聲明瞭沒有被使用編譯器會提示警告,在Go中如果一個變數編譯了沒有被使用則編譯錯誤!
語言變數作用域
作用域為已宣告識別符號所表示的常量、型別、變數、函式或包在原始碼中的作用範圍。
Java 區域性變數
- 區域性變數宣告在方法、構造方法或者語句塊中;
- 區域性變數在方法、構造方法、或者語句塊被執行的時候建立,當它們執行完成後,變數將會被銷燬;
- 訪問修飾符不能用於區域性變數;
- 區域性變數只在宣告它的方法、構造方法或者語句塊中可見;
- 區域性變數是在棧上分配的。
- 區域性變數沒有預設值,所以區域性變數被聲明後,必須經過初始化,才可以使用。
類變數(靜態變數)
- 類變數也稱為靜態變數,在類中以static關鍵字宣告,但必須在方法構造方法和語句塊之外。
- 無論一個類建立了多少個物件,類只擁有類變數的一份拷貝。
- 靜態變數除了被宣告為常量外很少使用。常量是指宣告為public/private,final和static型別的變數。常量初始化後不可改變。
- 靜態變數儲存在靜態儲存區。經常被宣告為常量,很少單獨使用static宣告變數。
- 靜態變數在第一次被訪問時建立,在程式結束時銷燬。
- 與例項變數具有相似的可見性。但為了對類的使用者可見,大多數靜態變數宣告為public型別。
- 預設值和例項變數相似。數值型變數預設值是0,布林型預設值是false,引用型別預設值是null。變數的值可以在宣告的時候指定,也可以在構造方法中指定。此外,靜態變數還可以在靜態語句塊中初始化。
- 靜態變數可以通過:ClassName.VariableName的方式訪問。
- 類變數被宣告為public static final型別時,類變數名稱一般建議使用大寫字母。如果靜態變數不是public和final型別,其命名方式與例項變數以及區域性變數的命名方式一致。
Go
和java差不多
Go 語言中變數可以在三個地方宣告:
- 函式內定義的變數稱為區域性變數
- 函式外定義的變數稱為全域性變數
- 函式定義中的變數稱為形式引數
總結:go和java的變數作用域差不多,區域性變數和全域性變數名都可以重複,但是使用過程中使用就近原則。
語言常量
java中對常量使用修飾符final修飾,被final修飾過得變數都屬於常量,常量只是在編譯中的,編譯器不允許你修改它的值
Go中的常量使用const宣告。僅僅對於變數來說使用差不多
語言運算子
- 算術運算子
- 關係運算符
- 邏輯運算子
- 位運算子
- 賦值運算子
- 其他運算子
兩種語言的運算子基本都是這幾種,用法也是差不多!
今天就寫到這裡了,之後的控制流程,條件語句基本和java都差不多主要熟悉就行了,後面會跳過直接寫關於陣列,切片,指標已經結構體