首頁 > 後端開發 > Golang > golang與java語法上的區別

golang與java語法上的區別

王林
發布: 2019-12-07 10:45:22
原創
2773 人瀏覽過

golang與java語法上的區別

變數宣告與賦值

Java:

int i;    // 声明
int j = 1; // 声明+赋值
登入後複製

Go:

var i int    // 声明
i := 1        // 声明+赋值
登入後複製

1、變數聲明:var是關鍵字,格式:var 變數名稱變數類型

2、變數宣告與賦值: := 符號支援自動推導類型

異常處理

#Java:

golang與java語法上的區別

Go:

golang與java語法上的區別

#go的例外是做為函數傳回值的,透過判斷是否存在error,來判斷異常。 (不能夠像Java一樣拋出例外)

go的if語句支援初始條件,即先執行if之後的語句(分號之前),再執行分號之後的判斷語句,此語句常用於異常處理。

go的大括號必須在行末go函數或變數為”公有”,首字母大寫,”私有”則小寫。

參數傳遞

golang與java語法上的區別

change函數是傳遞的對象,函數呼叫的時候,會拿到物件的拷貝。

change2函數是傳遞的指針,函數呼叫的時候,會拿到一個指向改對象的指針。

go沒有引用傳遞

多態

此範例有點長,是求面積的問題,針對與圓形和矩形兩種類型

java:

java.lang.Math;public class Polymorphism{
        public static class Rectangle implements Areable{    //矩形                double width;
                double height;
                public Rectangle(double width,double height){   
                        this.width = width;
                        this.height = height;}
                public double area(){
                        return width * height;}
        }
        public static class Circle implements Areable{ // 圆形                double radius;
                public Circle(double radius){
                        this.radius = radius;}
                public double area(){
                        return radius * radius * Math.PI;}
        }        public static interface Areable{
              double area();
        }public static void main(String[] args){
      Areable arear = new Rectangle(5.0,5.0);
      Areable areac = new Circle(2.5);
      System.out.println(arear.area());
      System.out.println(areac.area());
    }
}
登入後複製

Go:

package main
import (
        "fmt"
        "math"
)
type Rectangle struct {    // 矩形        
    width float64        
    height float64
}
type Circle struct {    // 圆形
    radius float64
}
type Areable interface{    // 接口:一组method签名的组合,通过interface来定义对象的一组行为。
//  只要是实现了interface中的所有的method的结构体,就可以认为是这个interface的实例,Duck typing        
area() float64
}
func (r Rectangle) /* 函数的接受者Receiver */ area() float64 /* 返回值类型*/ {    
        return r.width * r.height
}
func (c Circle) /* 函数的另一个接受者Receiver */  area() float64 /* 返回值类型*/{  
        return c.radius * c.radius * math.Pi
}
func main(){
        ra := Rectangle{5,5}
        ca := Circle{2.5}
        fmt.Println(ra.area())
        fmt.Println(ca.area())
}
登入後複製

相關文章教學:golang教學

以上是golang與java語法上的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板