获得徽章 0
#挑战每日一条沸点# http状态码好多啊, 但是常用的也就那么几个, emmmmmm
评论
#挑战每日一条沸点# 反射(reflect)让我们能在运行期探知对象的类型信息和内存结构,这从一定程度上弥补了静态语言在动态行为上的不足。同时,反射还是实现元编程的重要手段。和C数据结构一样,Go对象头部并没有类型指针,通过其自身是无法在运行期获知任何类型相关信息的。反射操作所需的全部信息都源自接口变量。接口变量除存储自身类型外,还会保存实际对象的类型数据。
展开
评论
#挑战每日一条沸点# 感觉自己好菜, 哈哈哈哈, 一个简单的bug三个小时都没处理好, 太费了吧
评论
#挑战每日一条沸点# 多个项目如果用了不同的orm框架,千万不要放在同一个工作区。
评论
#挑战每日一条沸点# grpc真的好难啊, 有没有懂的教教我[大哭][大哭][大哭]
评论
#每天一个知识点# Go的函数名和医名函数字面量的值有3层含义:
(1)类型信息,表明其数据类型是函数类型。
(2)函数名代表函数的执行代码的起始位置。
(3)可以通过函数名进行函数调用,函数调用格式为funcname(param list)。
评论
#每天一个知识点# 相比数字、数组等类型,引用类型拥有更复杂的存储结构。除分配内存外,它们还须初始化一系列属性,诸如指针、长度,甚至包括哈希分布、数据队列等。内置函数new按指定类型长度分配零值内存,返回指针,并不关心类型内部构造和初始化方式。而引用类型则必须使用make函数创建,编译器会将make转换为目标类型专用的创建函数(或指令),以确保完成全部内存分配和相关属性初始化。
展开
评论
#挑战每日一条沸点#
某些时候,转换操作会拖累算法性能,可尝试用“非安全”方法进行改善。
func toString(bs[]byte)string{
return*(*string)(unsafe.Pointer(&bs))
}
该方法利用了[]byte和string头结构“部分相同”,以非安全的指针类型转换来实现类型“变更”,从而避免了底层数组复制。在很多Web Framework中都能看到此类做法,在高并发压力下,此种做法能有效改善执行性能。只是使用unsafe存在一定的风险,须小心谨慎!
展开
评论
#挑战每日一条沸点# 大量函数和方法返回error,使得调用代码变得很难看,一堆堆的检查语句充斥在代码行间。解决思路有:
使用专门的检查函数处理错误逻辑(比如记录日志),简化检查代码。
在不影响逻辑的情况下,使用defer延后处理错误状态(err退化赋值)。
在不中断逻辑的情况下,将错误作为内部状态保存,等最终“提交”时再处理。
展开
评论
#每天一个知识点# 返古的错误处理方式,是Go被谈及最多的内容之一。有人戏称做“Stuck in 70’s”,可见它与流行趋势背道而驰。
评论
#挑战每日一条沸点# 终于完成了注册和登录接口, 好难啊[大哭][大哭][大哭]
评论
下一页
个人成就
文章被阅读 409
掘力值 82
收藏集
0
关注标签
0
加入于