39

Go之断言类型(assert type)

 4 years ago
source link: https://studygolang.com/articles/29338
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

1.背景介绍:

笔者最近在使用一个数据结构实现多个接口,但是却发现想要在一段时间内转换成接口1,另外一段时间转换成接口2,所以也就使用到了断言类型。在看过断言类型之后,觉得还是很有必要讲一讲这个断言类型,于是便有了这篇文章。

2.断言类型介绍:

接口类型提供一种,将接口类型转换成具体类型的转换方法,也就是断言类型(assert type)。使用方法如下所示:

t := i.(T)

// T:表示的是具体的数据类型,i:表示的是接口变量i,t:表示的是转换之后的变量。

这个语句实现的功能是:将接口变量i按照类型T转换成t,其中t中的值是i转换得来的,一旦转换不成功就会触发一个panic。

除此之外还有另外一个写法:

t, ok := i.(T)

// 表达式里面多了一个ok,实现的功能是:将接口i按照类型T转换成t,如果类型匹配ok=true,如果类型不匹配,ok=false。 改语句不会触发panic。

详情参见: Go语言之断言类型

欢迎关注公众号:灰子学技术

英文原文可以参考: https://tour.golang.org/methods/15

https://medium.com/golangspec/type-assertions-in-go-e609759c42e1

欢迎关注我们的微信公众号,每天学习Go知识

FveQFjN.jpg!web

Recommend

  • 31
    • studygolang.com 6 years ago
    • Cache

    golang: 类型转换和类型断言

    类型转换在程序设计中都是不可避免的问题。当然有一些语言将这个过程给模糊了,大多数时候开发者并不需要去关注这方面的问题。但是golang中的类型匹配是很严格的,不同的类型之间通常需要手动转换,编译器不会代你去做这个事。我之所以说...

  • 78

    PHP 中的断言常用于调试,检查一个表达式或语句是否为 FALSE。本文带你重新认识 PHP assert() 函数的神(Qi)通(Yin)广(Ji)大(Qiao)。 本文基于 PHP Version 7.1.28 什么是断言

  • 53

    通过类型断言(type assertion)方式来判断接口的具体类型, Sometimes, you may want to know the exact type of an interface variable. In this scenario, you can use type assertion : x.(T)

  • 26
    • studygolang.com 5 years ago
    • Cache

    类型转换和断言

    Golang不支持隐式类型转换 普通类型转换 普通类型转换可以转换不同但是相互兼容的类型,例如int与float,int与rune,但是string与数字类型是不能进行普通类型转换的。 例如: a = 123 x := i...

  • 45
    • Github github.com 5 years ago
    • Cache

    谈谈 TypeScript 中的类型断言

    类型断言 类型断言(Type Assertion)可以用来手动指定一个值的类型。 语法 值 as 类型 或 <类型>值 在 tsx 语法(React 的 jsx 语法的 ts 版)中必须使用前者,即

  • 19

    Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不...

  • 19
    • studygolang.com 4 years ago
    • Cache

    聊聊golang的类型断言

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

  • 7
    • www.maixj.net 4 years ago
    • Cache

    如何使用C语言的assert断言?

    如何使用C语言的assert断言? 2020年12月29日 / 3次阅读CC++ 调试程序的有效手段,就是加断言,assert。 “断言”在语文中的意思是“断定”、“十分肯定地说”,在编程中是指对某种假设条件进...

  • 10
    • shockerli.net 3 years ago
    • Cache

    你所不知的 PHP 断言(assert)

    PHP 中的断言常用于调试,检查一个表达式或语句是否为 FALSE。本文带你重新认识 PHP assert() 函数的神(Qi)通(Yin)广(Ji)大(Qiao)。 本文基于 PHP Version 7.1.28 什么是断言 编写程序时,常会...

  • 8

    防御式编程的重点就是需要防御一些程序未曾预料的错误,这是一种提高软件质量的辅助性方法,断言assert就用于防御式编程,编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。使用断言是为了验证预期的结果——当程序执行到断言的位置时,对应的...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK