玩转Go语言之断言推导

1.断言怎么来的:

//1.空接口可以接受任何类型的数据
//var num int = 5
//var in interface{}
//in = num
//fmt.Printf("%T,%v",in,in)

//定一个空接口保存一个整型数据
var in interface{} = "张三"

//定义一个字符串变量
var value string

//把空接口赋值给字符串变量会报错
//原因:go语言中只有相同的数据类型才能赋值,我们可以使用go语言中的断言解决这个问题
//value = in

//把空接口转换成具体的数据类型
value = in.(string)
fmt.Printf("%T,%v",value,value)

if value ,ok := in.(string); ok{
   fmt.Printf("%T,%v",value,value)
}else {
   //打印字符串变量
   fmt.Println("转换失败")
}复制代码

2.如何使用断言:

//定义一个结构体类型
type Person struct {
   name string
   age int
}

//定义一个接口
type Usb interface {
   start()
}

//利用结构体实现接口中的所有方法
func (p Person)start()  {
   fmt.Println(p.age,p.name)
}

func (p Person)end()  {
   fmt.Println(p.age,p.name)
}

func main() {

   //1.把接口类型转换成具体类型

   //定义一个接口变量
   var in Usb = Person{"张三",20}

   //调用接口中的方法
   in.start()

   //接口转换成结构体数据类型
   if cm, ok := in.(Person); ok{
      cm.end()
      fmt.Println(cm.name)
   }

   //2.可以把空接口类型转换成具体接口类型
   var inEmpty interface{} = Person{"张三",20}
   if cm, ok := inEmpty.(Usb); ok{
      cm.start()
   }
   
}
复制代码

总结:

1.如果结构体实现了某个接口, 那么就可以使用接口类型来保存结构体变量
2.如果利用接口类型变量保存了实现了接口的结构体, 那么该变量只能访问接口中的方法, 不能访问结构体中的特有方法, 以及结构体中的属性
3.如果利用接口类型变量保存了实现了接口的结构体,想要访问结构体中特有的方法和属性, 那么必须进行类型转换, 将接口类型转换为结构体类型
复制代码

 代码:https://github.com/codeXiaoQiang/Go-language


转载于:https://juejin.im/post/5bada0a55188255c7039aefc

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值