zoukankan      html  css  js  c++  java
  • Go-day07

    今日内容概要:

      1.json解析

          2.文件操作

          3.命令行参数

          4.错误处理

    一、Golang里的类型断言

    1 em必须为initerface类型才可以进行类型断言

    比如如下代码会报错 

    	s := "BrainWu"
    	if v, ok := s.(string); ok {
    		fmt.Println(v)
    	}

    invalid type assertion: s.(string) (non-interface type string on left)

    在这里只要是在声明时或函数传进来的参数不是interface类型那么做类型断言都是回报 non-interface的错误的

    所以我们只能通过将s作为一个interface{}的方法来进行类型断言 如下代码所示

     
    
    	s := "BrainWu"
    	if v, ok := interface{}(s).(string); ok {
    		fmt.Println(v)
    	}
    

      

    将s显示的转换为interface{}接口类型则可以进行类型断言了

    2 当函数作为参数并且被调用函数将参数类型指定为interface{}的时候是没有办法直接调用该方法的

    比如如下代码是错误的在编译期间就会报错

    cannot convert in (type interface {}) to type Handler: need type assertion

    func ServeHTTP(s string) {
    	fmt.Println(s)
    }
    
    type Handler func(string)
    
    func panduan(in interface{}) {
    	Handler(in)("wujunbin")
    }
    
    func main() {
    	panduan(Handler(ServeHTTP))
    }
     
    

      

    根据错误提示是说要我们先进行类型断言才可以继续使用该类型的函数

    	if v, ok := in.(Handler); ok {
    		//跟什么类型判断就只能调用什么类型的方法
    		v("BrainWu")
    	}
    

      

    只有让传进来的in参数先与Handler进行类型判断 如果返回值是OK则代表类型相同才能进行对应的方法调用

    另外进行类型断言之后如果断言成功 就只能使用该类型的方法比如对一个结构体S进行与A接口断言

    S实际上实现了A B两个接口

    A interface 具有 a()方法  B interface 具有 b()方法 如果结构体S作为参数被传入一个函数中并且在该函数中是interface{}类型

    那么进行与A的类型断言之后就只能调用a()而不能调用b()因为编译器只知道你目前是A类型却不知道你目前也是B类型

    3 另外讲解 switch与类型断言的结合使用还是比较方便的 

    比如下面这个例子

    package main
    
    import (
    	"fmt"
    )
    
    type Element interface {}
    
    func main() {
    	var e Element = 100
    	switch value := e.(type) {
    	case int:
    		fmt.Println("int", value)
    	case string:
    		fmt.Println("string", value)
    	default:
    		fmt.Println("unknown", value)
    	}
    }
    

      

    type是一个关键字 

  • 相关阅读:
    Ansible 利用playbook批量部署mariadb
    Win10系统 安装Anaconda+TensorFlow+Keras
    keras中7大数据集datasets介绍
    新闻分类:多分类问题
    机器学习之SVM多分类
    机器学习之多分类学习
    机器学习(经典博客)
    机器学习实战
    多元函数的极值分析
    一元函数、多元函数的泰勒公式
  • 原文地址:https://www.cnblogs.com/liujiliang/p/9734058.html
Copyright © 2011-2022 走看看