defer 语句

这玩意基本没啥作用,就是在一个函数中如果某行代码前面有defer 关键字的话,这行代码就最后执行,如果有多个defer语句的话,遵循后进先出的原则

例如:

fmt.Println("申请存储空间")defer fmt.Println("释放存储空间")fmt.Println("使用存储空间")fmt.Println("使用存储空间")fmt.Println("使用存储空间")复制代码

简化代码作用:

func ReadWrite() bool {file.Open("file")defer file.Closeif failureX {// file.Close()retrun false  }if failureY {//file.Close()return false}//file.Closereturn true
}
复制代码

总结:

1.defer语句的格式

defer 语句

2.defer语句的作用

延迟执行, 会在所属函数执行完毕之后再执行

常用于资源释放, 解锁, 错误处理等等

以前在C语言中我们说过, 通过malloc申请的存储空间, 一定更要释放free

但是由于我们不能写完malloc之后立即free,所以经常导致我们忘记释放

malloc -- >申请存储空间

... ... --> 使用存储空间

free --> 释放存储空间

注意点:

如果在同一个函数中编写了多个defer语句, 那么会遵守先进后出的原则

先注册的defer语句后执行, 后注册的defer语句先执行

init()函数

1.在Go语言中保留了两个函数, 一个叫做main,另外一个叫做init

main函数是由系统调用的, init函数也是由系统调用的复制代码

2.init函数的作用:

对当前文件进行初始化复制代码

3.调用顺序

main包 --> 常量 --> 全局变量 --> init函数 --> main函数 --> 执行逻辑代码 --> Exit程序复制代码

4.注意点:

main函数只能在main包中(package main), 并且一个程序只能有一个,
但是init函数每个包中都可以有, 并且可以有多个(但是企业开发推荐只写一个)
复制代码

上图是每个包中初始化的先后顺序

import几种形式

1.点操作

import{

. "fmt"

}

func main {

Println("点操作")

}

2.起别名

import{

f "fmt"

}

func main {

f.Println("起别名")

}

3._操作

只是调用包的init函数,不调用其他函数

import{

_ "test"

}

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

玩转Go语言之特殊的语法相关推荐

  1. 玩转C语言之自定义数据类型-typedef

    玩转C语言之自定义数据类型-typedef 1 引言 引言:在C语言中没有提供字节类型,如果在工程中需要使用表示字节的变量时,该怎么办呢? 我们知道 1 个字节占用 8 个二进制位空间,解决这个问题的 ...

  2. 零基础玩转C语言系列第一章——初始C语言(上)

    目录 一.如何学好C语言? 1.鼓励你,为你叫好. 2.挤时间学习 3.学好编程,不仅仅是学好C语言 二.初始C语言 本章目标 本章重点 1.什么是C语言? 2.第一个C语言程序 3.数据类型 4.变 ...

  3. 深圳c语言程序设计,深圳零基础玩转C语言编程

    零基础玩转C语言编程 教学特色:注重学员的实操动手能力,案例解析且提供一对一服务 使用教材:国家教材 学习内容:掌握Microsft Visual 2010集成开发工具.掌握C语言编程,重点掌握数组. ...

  4. R语言用户自定义函数的语法结构、编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等)、编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据)、应用自定函数

    R语言用户自定义函数的语法结构.编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等).编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据).应用自定函数 ...

  5. 编译原理课程作业-Cminus语言的词法及语法分析器实现

    Cminus Compiler 编译原理课程作业-Cminus语言的词法及语法分析器实现 设计思想 词法分析 使用确定有限态自动机(DFA)实现与Lex自动分析两种方式实现. 语法分析 使用递归下降方 ...

  6. 从D语言看C++ Template语法

    从D语言看C++ Template语法 许式伟 (版权声明) 2007-5-2 D语言是一门新兴的语言,它试图结合C/C++性能上的高效,同时又象Python.Ruby等"现代"语 ...

  7. 悠漓带你玩转C语言(数组)

    1. 一维数组的创建和初始化. 1.1 数组的创建 数组是一组相同类型元素的集合 数组的创建方式: type_t arr_name [const_n]; //type_t 是指数组的元素类型 //co ...

  8. 基于Python实现的类Pascal语言的词法分析和语法分析器

    类Pascal语言的语法分析器 功能 使用Python实现的类Pascal语言的词法分析和语法分析器. 语法分析实现的功能有: 利用文法推导式构造LR(1)分析表 使用LR(1)分析表对输入的Toke ...

  9. c语言实现的学生管理系统,教你如何玩飞c语言!

    教你如何玩飞c语言------学生管理系统篇上(链表篇) 作为编程语种链最底层的OG(元老),相信无论是学Java,python,JS还是其他语种的小伙伴们,都或多或少地听说过我们年长的长辈,c语言! ...

最新文章

  1. 新手!SDK Manager里找不到API安装的选项怎么办?
  2. 《SAS编程与数据挖掘商业案例》学习笔记之十七
  3. 分析股票大数据_Python大数据分析量学祖师爷网站数据
  4. 剑指Offer——跳台阶
  5. 10-300-020-简介-架构-简介
  6. 简明python教程怎么买-简明python教程在哪买!《简明python教程》 下载地址?
  7. 【数论】—— 多边形数的计算(三角形数,五边形数)
  8. Apache+tomcat集群
  9. 基于Nextcloud,挂载Google drive,搭建Aria2+AriaNg,实现在线下载BT磁链/在线观看/全功能文件管理/无限容量云盘
  10. Linux网络编程(Socket)(一)
  11. 深股通,沪股通,港股通
  12. 专属于程序员的理财建议,抱走不谢
  13. 集成框架 -- 快手接入
  14. LMS算法实现系统识别
  15. 移动硬盘安装ubuntu(UEFI)——遇到的问题以及解决方法
  16. css属性visibility:unset
  17. C# 数字转16进制和字符串转换16进制
  18. 模板template
  19. 手机扫描证件识别的优势
  20. android 使用阿里百川电商SDK的问题

热门文章

  1. 比特币多重签名机制使用篇
  2. python四:字符串和数字
  3. python-psutil
  4. PHP动物书总结14-17
  5. 细说firewalld和iptables
  6. oracle递归查询(查询条件ID下得所有子集)
  7. Hibernate 统计记录总数方法汇总
  8. 利用API实现窗体淡入淡出特效
  9. mysqld命令查看数据库目录
  10. SQL Server 2005 镜像构建说明(转载)