AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
## 断言 类型断言是一个使用在**接口值**上的操作。语法上它看起来像x.(T)被称为断言类型,这里x表示一个接口的类型和T表示一个类型。一个类型断言检查它操作对象的动态类型是否和断言的类型匹配。 上面这句话的理解就是: 1.**x必须是一个接口类型**. 2.**T可以是具体类型,也可以是接口类型.** ## 两种可能 x.(T) 1. T是具体类型: ~~~ var w io.Writer w = os.Stdout //返回一个*os.File类型 f := w.(*os.File) // success: f == os.Stdout c := w.(*bytes.Buffer) // panic: interface holds *os.File, not *bytes.Buffer ~~~ 2. T是接口类型: ~~~ var w io.Writer w = os.Stdout rw := w.(io.ReadWriter) // success: *os.File has both Read and Write w = new(ByteCounter) rw = w.(io.ReadWriter) // panic: *ByteCounter has no Read method ~~~