• go语言接口类型断言


    package main
    
    import "fmt"
    
    type Course struct {
        name  string
        price int
        url   string
    }
    type Printer interface {
        printInfo() string
    }
    
    func (c Course) printInfo() string {
        return "课程信息"
    }
    
    //func print(x interface{}){
    //    if v, ok := x.(int); ok{
    //        fmt.Printf("%d(整数)\n", v)
    //    }
    //    if s, ok := x.(string); ok {
    //        fmt.Printf("%s(字符串)\n", s)
    //    }
    //    //牵扯到go的另一个默认的问题
    //    //fmt.Printf("%v\n", i)
    //}
    
    type AliOss struct {
    }
    
    type LocalFile struct {
    }
    
    func store(x interface{}) {
        switch v := x.(type) {
        case AliOss:
            //此处要做一些特殊的处理,我设置阿里云的权限问题
            fmt.Println(v)
        case LocalFile:
            //检查路径的权限
            fmt.Println(v)
        }
    }
    
    //判断类型
    func print(x interface{}) {
        switch v := x.(type) {
        case string:
            fmt.Printf("%s(字符串)\n", v)
        case int:
            fmt.Printf("%d(整数)\n", v)
        }
    }
    
    func main() {
        //空接口
        var i interface{} //空接口
        //空接口可以类似于我们java和python中的object,等于下面的代码
        //type Printer interface {
        //}
    
        //i = Course{}
        //fmt.Println(i)
        i = 10
        print(i)
        i = "bobby"
        print(i)
        i = []string{"django", "scrapy"}
        print(i)
        //空接口的第一个用途 可以把任何类型都赋值给空接口变量
        //2. 参数传递
        //3. 空接口可以作为map的值
        var teacherInfo = make(map[string]interface{})
        teacherInfo["name"] = "bobby"
        teacherInfo["age"] = 18
        teacherInfo["weight"] = 75.2
        teacherInfo["courses"] = []string{"django", "scrapy", "sanic"}
        fmt.Printf("%v", teacherInfo)
        //类型断言
        //接口的一个坑, 接口引入了
        // 接口有一个默认的规范  接口的名称一般以 er结尾
        //c := &Course{}
        //var c Printer = Course{}
        //c.printInfo()
    
    }
  • 相关阅读:
    C 应用
    C 基本语法
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
  • 原文地址:https://www.cnblogs.com/wlike/p/16414076.html
Copyright © 2020-2023  润新知