Go言語の基本インターフェース、空のインターフェース、型アサーション


Go言語のインターフェースは、型、抽象型です。インターフェースはメソッドのコレクションです。インターフェースは、マシンにランドリー機能とダンプ機能がある限り、プロトコルとルールを定義するようなものです。ドライ関数は、洗濯機。属性は気にせず
動作インターフェースの実装条件だけを気にします。
オブジェクトがインターフェースのすべてのメソッドを実装している限り、インターフェースが実装されます。つまり、インターフェースはリストです。必要に実装することの方法。の
インタフェース型変数
インタフェースタイプは、インタフェースを実装するすべてのインスタンスを格納することができ、
種類およびインタフェース。関係
A型は、同時に複数のインタフェースを実装することができる
。の値は、これらのインターフェイスは独立したインターフェイスです。インターフェイス
のストレージは2つの部分に分かれており、1つは特定のタイプ、1つは特定のタイプの値であり、これら2つの部分は動的タイプと動的値と呼ばれます。

package main

import "fmt"
//定义一个接口
type pp interface {
    
    
    run()
}

type person struct {
    
    
    name string
    age  int
}
func (p *person) run() {
    
    
    fmt.Println("跑")
}
type print struct {
    
    
    name string
}
func (p print) run() {
    
    
    fmt.Println("跑不了")
}
func main() {
    
    
    p := &person{
    
    
        "dlq",
        21,
    }
    //初始化接口
    pp1 := pp(p)
    pp1.run()
    p1 := print{
    
    
        "zkj",
    }
    //接口类型可以存储所有类型的实力
    //当类型下的函数,为指针就守着,那么存到接口中的也应该为指针类型
    pp2 := pp(p1)
    pp2.run()
}

インターフェイスのネスト、型とインターフェイスの関係、空のインターフェイス、型アサーション

package main

import "fmt"
type pp1 interface {
    
    
    run()
}
type pp2 interface {
    
    
    move()
}
//接口的嵌套,那么这个切口就拥有所有嵌套的接口中的方法
type pp3 interface {
    
    
    pp1
    pp2
}
type person struct {
    
    
    name string
    age  int
}
func (p *person) run() {
    
    
    fmt.Println("run")
}
func (p *person) move() {
    
    
    fmt.Println("move")
}
//一个类型可以同时实现多个接口,接口之间是独立的
func main() {
    
    
    p := &person{
    
    }
    pp1 := pp1(p)
    pp2 := pp2(p)
    pp1.run()
    pp2.move()
    pp3 := pp3(p)
    pp3.move()
    //空接口
    mapp := map[string]interface{
    
    }{
    
    
        "name":  "dlq",
        "age":   12,
        "hobby": []string{
    
    "吃", "喝", "玩", "乐"},
    }
    fmt.Println(mapp)
    x := mapp["hobby"]
    //类型断言,判断一个变量是不是你想要的值
    v, ok := x.([]string)
    if !ok {
    
    
        fmt.Println("这个变量不是[]string类型")
    }
    fmt.Println(v)
}

おすすめ

転載: blog.csdn.net/weixin_44865158/article/details/114702401