int i; // 聲明 int j = 1; // 聲明+賦值
var i int // 聲明 i := 1 // 聲明+賦值
// 聲明 int execute(){ throw new RuntimeException(」msg」); // 有錯誤 return 0; // 無錯誤 } // 處理 try{ int code = execute(); }catch(Exception e){ // TODO 異常狀況如何處理 }
// 聲明 func Execute() (int , error) { return 1,error.New(「msg」) // 有錯誤 return 0 // 無錯誤 } // 處理 if code,err=c.Execute();err!=nil { // TODO 異常狀況如何處理 }
Javajava
略,見Go實現中的註釋函數
Gothis
package main // 入口必須是main import "fmt" // 引包 type People struct { // 結構體,相似Java中的class age int // 變量聲明,變量類型放在後面 name string } // 相似Java方法的函數 func change(p People){ // func爲關鍵字 p.age = 18 } // 傳遞指針 func change2(p *People){ p.age = 18 } func main(){ p := People{22,"lsq"} // 新建對象並賦值 change(p) // 調用函數change,傳遞對象 fmt.Println(p) // 控制檯打印 change2(&p) // 調用函數change2,傳遞指針 fmt.Println(p) } // 執行結果 {22 'lsq'} {18 'lsq'}
此例有點長,是一個求面積的問題,針對與圓形和矩形兩種類型
import 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()); } }
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()) }