当前位置: 首页 > news >正文

怎么免费建立网店网站网站建设和网络推广

怎么免费建立网店网站,网站建设和网络推广,自己做名片的网站,wordpress注册跳过邮箱验证目录 1、资源释放 2、异常捕获 3、参数的预计算 4、defer 返回值的陷阱 1、资源释放 下面是一个简单的读取文件的程序#xff0c;os.Open 打开文件资源描述符#xff0c;在读取文件后#xff0c;需要释放资源。但是在错误的时候#xff0c;程序就直接返回那么#xf…目录 1、资源释放 2、异常捕获 3、参数的预计算 4、defer 返回值的陷阱 1、资源释放 下面是一个简单的读取文件的程序os.Open 打开文件资源描述符在读取文件后需要释放资源。但是在错误的时候程序就直接返回那么资源就得不到释放 func ReadFile(Filename string) ([]byte, error) {file, err : os.Open(Filename)if err ! nil {return nil, err}stat, err : file.Stat()if err ! nil {return nil, err}var re make([]byte, stat.Size())_, err file.Read(re)if err!nil{return nil,err}file.Close()if err ! nil {return nil, err}return re, nil ​ } 那么程序需要就需要修改为在所有err 的地方都需要释放资源 file, err : os.Open(Filename) if err ! nil {file.Close()return nil, err }stat, err : file.Stat()if err ! nil {file.Close()return nil, err}var re make([]byte, stat.Size())_, err file.Read(re)if err ! nil {file.Close()return nil, err} 但是这样处理很不优雅而且很容易漏掉那么我们就可以利用defer 的延迟调用,程序结束的时候释放资源,能减少大量冗余代码避免由于忘记释放资源而产生的错误 func ReadFile(Filename string) ([]byte, error) {file, err : os.Open(Filename)defer file.Close()if err ! nil {return nil, err}stat, err : file.Stat()if err ! nil {return nil, err}var re make([]byte, stat.Size())_, err file.Read(re)if err ! nil {return nil, err}if err ! nil {return nil, err}return re, nil ​ } 2、异常捕获 避免程序因为panic 异常退出可以通过defer函数中使用recover进行异常捕获程序就不会异常退出main的 fmt.Println 可以打印 func ReadFile(Filename string) ([]byte, error) {file, err : os.Open(Filename)defer file.Close()if err ! nil {return nil, err}stat, err : file.Stat()if err ! nil {return nil, err}var re make([]byte, stat.Size())_, err file.Read(re)if err ! nil {return nil, err}if err ! nil {return nil, err}return re, nil ​ } 3、参数的预计算 传递到defer 中的函数参数是预执行的因此在执行 defer 语句时执行了a1并将其保留下来只到函数执行完后才执行 defer 函数体内的语句。 func main() {a : 1defer func(b int) {fmt.Println(b)}(a 1)a 100 } 4、defer 返回值的陷阱 有返回值时时先执行defer 还是先执行 return 具体情况具体分析先看几个例子 var g 100 func gf() (r int) {defer func() {g 200}()fmt.Printf(g:%d\n, g)return g } ​ func main() {i : gf()fmt.Println(i)fmt.Println(g) } ​ g:100 100 200 ​ 从返回结果看好像是先执行了return 在执行了 defer 那么下面的程序 var g 100 ​ func gf() (r int) {r gdefer func() {r 200}()r 0return r } ​ func main() {i : gf()fmt.Println(i)fmt.Println(g) } 返回结构 200 100 从返回结果好像是先执行了defer 后执行了 return 那么为什么会这样呢原因是return 不是一个原子操作包含了下面几步 将返回值保存在栈上-执行defer 函数-函数返回 对于第一个例子 g100 rg g200 return 对于第二个例子 g100 rg g200 return
http://www.yutouwan.com/news/34681/

相关文章:

  • 网站建设后期需要做什么ai设计室内设计
  • 美术馆网站建设概述天津机械网站建设模板
  • 有域名和服务器怎么建网站郴州建设局门户网站
  • 温州专业微网站制作公司哪家好千锋教育成立于哪一年
  • 杭州seo网站推广带会员注册企业网站源码
  • 网站改版后seo该怎么做浦项建设中国有限公司网站
  • 企业网站建设备案都需要什么沂水网站制作
  • 上海html5网站制作深圳十大电商巨头
  • 沈阳网站建设建设公司排名湖南省住房和城乡建设厅网站
  • 网站开发要会英语吗wordpress 左右图文排版
  • 个人的小说网站如何做建设部网站1667号
  • 专业营销型网站做网站维护怎么找客户
  • 泉州模板开发建站深圳商城网站设计费用
  • 网站做微信小程序wordpress建立php站点地图
  • 怎么样做移动油光文字网站专做it招聘的网站
  • 毕业设计医院网站设计怎么做网站论坛推广文案怎么做
  • 做鞋子出口需要作网站吗主题营销活动创意
  • 西宁平台网站建设设计需要的软件
  • 网站建设制作浩森宇特网站建设首页包括什么软件
  • 网站建设通俗讲专业做招聘的网站
  • 个人网站备案后可以做行业内容吗刷外链工具
  • 河南省建设执业资格注册中心网站网站模板凡平台
  • 安监局网站建设常见的网络营销平台有哪些
  • php 网站建设方案widget wordpress
  • 成立一个公司需要什么条件南通优普网站建设优化
  • 网站建设与运营的论文的范本大庆网站建设方案论文
  • 泰安企业建站公司网上外包加工活可信吗
  • 如何做属于自己的网站中国建筑有几个工程局
  • 广丰区建设局网站鞍山抖音seo新闻
  • 一个域名可以绑定几个网站手机网站注意哪些问题