go基础之类型断言
Posted zzxiaoma
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go基础之类型断言相关的知识,希望对你有一定的参考价值。
点前面是接口,后面是具体的类型,如果接口可以转为后面的类型,就转为后面的类型并返回
func main()
var w io.Writer = os.Stdout
f, ok := w.(*os.File) // success: ok, f == os.Stdout
if ok
fmt.Println(f)
b, ok := w.(*bytes.Buffer) // failure: !ok, b == nil
if ok
fmt.Println(b)
能不能转还需要看具体的值,虽然w是写接口,但是*os.File是可以读写的,所以可以转为io.ReadWriter
func main()
var w io.Writer
w = os.Stdout
rw := w.(io.ReadWriter)
fmt.Println(rw)
可以根据接口类型判断来执行不同的操作
package fmt
func formatOneValue(x interface) string
if err, ok := x.(error); ok
return err.Error()
if str, ok := x.(Stringer); ok
return str.String()
// ...all other types...
以上是关于go基础之类型断言的主要内容,如果未能解决你的问题,请参考以下文章