美文网首页
golang中的断言 形如 A.(T)

golang中的断言 形如 A.(T)

作者: 个00个 | 来源:发表于2018-11-23 16:42 被阅读0次

形如A.(T)
其中A只能为interface, T为类型, 可以是interface 或者其他类型. string, int, struct等.

  1. 若T为变量类型. 则用于判断转换为对应的变量类型. 这种用法可以使得一个函数接受多类型的变量.
func VarType(var interface {})(err error){
  switch t := var.(type){
      case string:
          //add your operations
      case int8:
          //add your operations
      case int16:
          //add your operations
      default:
          return errors.New("no this type")
  }
}

//空接口包含所有的类型,输入的参数均会被转换为空接口
//变量类型会被保存在t中
  1. 若T为interface, 则可以用用来判断A这个接口类型是否实现了特定接口.
package main

import (
    "fmt"
    "strconv"
)

type I interface{
    Get() int
    Put(int)
}

type P interface{
    Print()
}
//定义结构体,实现接口I
type S struct {
    i int
}
func (p *S) Get() int {
    return p.i
}
func (p *S) Put(v int ) {
    p.i = v
}
func (p *S) Print() {
    fmt.Println("interface p:" + strconv.Itoa(p.i))
}

//使用类型断言
func GetInt( some interface {}) int {
    if sp, ok := some.(P); ok {       // 此处断言some这个接口后面隐藏的变量实现了接口P 从而调用了. P接口中的函数Print.
        sp.Print()
    }

    return some.(I).Get()
}

func main(){
    s := &S{i:5}
    // a := GetInt(s)
    fmt.Println(GetInt(s))
}

参考文章:
https://blog.csdn.net/Kiloveyousmile/article/details/78736718

就到这里咯.

相关文章

  • golang中的断言 形如 A.(T)

    形如A.(T)其中A只能为interface, T为类型, 可以是interface 或者其他类型. string...

  • 聊聊golang的类型断言

    序 本文主要研究一下golang的类型断言 类型断言 断言x不为nil且x为T类型 如果T不是接口类型,则该断言x...

  • Typescript 中的 const 断言

    在 Typescript 4.3 中,TypeScript 引入了 const 断言。const 断言用于告诉 T...

  • 随笔37号20181023-go断言

    类型断言 类型断言用于提取接口的底层值(Underlying Value)。 在语法i.(T)中,接口i的具体类型...

  • golang 类型断言

    golang类型断言 类型断言是一个使用在接口值上的操作 有时候,我们可能需要知道某个接口类型的实际类型,比如某个...

  • golang类型断言

    typeAnimalinterface{ Speak() } typeCatstruct{ Namestring ...

  • 断言

    // 断言 // assert(<#T##condition: Bool##Bool#>, <#T##messag...

  • Swift3 标准库中的全局函数

    //求绝对值func abs(T) //断言func assert(() -> Bool, () -> St...

  • python unittest.TestCase 断言方法

    1、最常见断言方法 2、T与异常、错误、警告和日志相关的断言方法 3、用于完成某种特定检查的断言方法 4、针对特定...

  • 英语词缀【24】

    【dic(t)】 "to say, to declare" "说,断言" |contradict=contra+d...

网友评论

      本文标题:golang中的断言 形如 A.(T)

      本文链接:https://www.haomeiwen.com/subject/wsmjqqtx.html