變量聲明與賦值
Java:
int i; // 聲明 int j = 1; // 聲明+賦值
Go:
var i int // 聲明 i := 1 // 聲明+賦值
1、變量聲明:var是關(guān)鍵字,格式:var 變量名稱(chēng) 變量類(lèi)型
2、變量聲明與賦值: := 符號(hào)支持自動(dòng)推導(dǎo)類(lèi)型
異常處理
Java:
Go:
go的異常是做為函數(shù)返回值的,通過(guò)判斷是否存在error,來(lái)判斷異常。 (不能夠像Java一樣拋出異常)
go的if語(yǔ)句支持初始條件,即先執(zhí)行if之后的語(yǔ)句(分號(hào)之前),再執(zhí)行分號(hào)之后的判斷語(yǔ)句,此語(yǔ)句經(jīng)常用于異常處理。
go的大括號(hào)必須在行末go函數(shù)或者變量為”公有”,首字母大寫(xiě),”私有”則小寫(xiě)。
參數(shù)傳遞
change函數(shù)是傳遞的對(duì)象,函數(shù)調(diào)用的時(shí)候,會(huì)拿到對(duì)象的拷貝。
change2函數(shù)是傳遞的指針,函數(shù)調(diào)用的時(shí)候,會(huì)拿到一個(gè)指向改對(duì)象的指針。
go沒(méi)有引用傳遞
多態(tài)
此例有點(diǎn)長(zhǎng),是一個(gè)求面積的問(wèn)題,針對(duì)與圓形和矩形兩種類(lèi)型
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簽名的組合,通過(guò)interface來(lái)定義對(duì)象的一組行為。 // 只要是實(shí)現(xiàn)了interface中的所有的method的結(jié)構(gòu)體,就可以認(rèn)為是這個(gè)interface的實(shí)例,Duck typing area() float64 } func (r Rectangle) /* 函數(shù)的接受者Receiver */ area() float64 /* 返回值類(lèi)型*/ { return r.width * r.height } func (c Circle) /* 函數(shù)的另一個(gè)接受者Receiver */ area() float64 /* 返回值類(lèi)型*/{ 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()) }
相關(guān)文章教程:golang教程