1. 程式人生 > 其它 >Go語言--介面interface

Go語言--介面interface

介面 interface

  1. 定義:

    • interface是方法的集合;
    • interface是一種型別,並且是指標型別;
    • interface的作用在於多型的實現;
    • interface不能包含任何變數。
  2. //書寫格式:
    type 介面名稱 interface{
        method1(引數列表) 返回值列表
        method2(引數列表) 返回值列表
        。。。。。。
    }
    
  3. 使用注意事項:

    • 介面的使用不僅僅針對結構體,自定義型別、變數等都可以實現介面;
    • 任意結構體都隱式地實現了空介面;
    • 要實現一個介面,必須實現該接口裡面的所有方法。
  4. 空介面

    /*
    Go 語言為了避免使用者重複定義很多空介面,它自己內建了一個空介面,名字叫 interface{}
    
    空接口裡面沒有方法,其作用相當於 Java 的 Object 型別,可以容納任意物件。
    */
    	fmt.Println("user:")
    	var user = map[interface{}]interface{}{
    		712:        18,
    		"address": "徐州",
    		5.2:        true,
    	}
    	fmt.Println(user)
    
  5. 介面巢狀:

    • 介面巢狀可理解為繼承,子介面擁有父介面的所有方法;
    • 如果使用該子介面,必須將父介面和子介面的所有方法都實現。
  6. 型別轉換:

    func main() {
    	var t interface{}
    
    	name := "小灰"
    	t = name 
    	x, ok := t.(int)
    	y, ok1 := t.(string)
    	fmt.Println(x, ok)
    	fmt.Println(y, ok1)
    }
    /*結果顯示如下:
    0 false
    小灰 true
    -------------------------------------
    將介面轉化為指定型別時,ok可省略,但是省略以後轉化失敗會報錯。
    true表示轉化成功,flase表示轉化失敗,並採用預設值。
    */