
文章插图
//4 newValue.String() 到底做了啥 , 其实根据上面我们很容易知道 , 无法就是 newValue.tab.fun[0].(newValue.data) , 所以就是这么简单 。
总结1、go的 interface{} 转换过程中至少做一次内存拷贝 , 所以传递指针是最好的选择 。
type User struct { Name string Ageint}func main() {var empty interface{} = User{} //这里会拷贝一次 , 将user转换成interface{} , 所以函数传递过程中也别直接使用结构体传递}正确写法func main() { var empty interface{} = &User{}}2、有人会问到字符串传递是否内存拷贝 , 回答否 , 因为字符串底层是一个 byte[] 数组 , 他的结构组成是type StringHeader struct { Data uintptr //数据 , 是一个二进制数组 Lenint// 长度}所以64位计算机 , 字符串的长度是128位 , 占用16个字节3、减少使用 interface{} , 因为会有不必要的开销 , 其次Golang本身是一个强类型语言 , 静态语言 , 申明式是最好的方式 。
4、 interface{} 是反射的核心 , 后期我会讲解反射
推荐阅读
- 瓷石茶盘的优点和缺点,普洱生茶的缺点
- 一 基本Spring Cloud的微服务架构搭建及应用
- 饭前饭后该怎么饮茶,饮茶的十点注意
- 茶品转化的沉默期,易武金品喝得到的转化品茗会石家庄站
- 推荐常用的5款代码比较工具「值得收藏」
- Win10系统内置的万能工具,功能强悍,可解决电脑大小故障!收藏
- 使用“全新启动”功能重置电脑,还原一个纯净原版的win10系统
- 2020年最值得阅读的十本程序员书
- 流行的机器学习算法总结,帮助你开启机器学习算法学习之旅
- 淘宝直通车推广计划怎么修改 直通车的推广计划名称怎么写
