Go语言基础06 _function

函数在Go语言中是一等公民

与其他主要编程语言的差别

  • 可以有多个返回值
  • 所有参数都是值传递:slice,map,channel 会有传引用的 错觉
  • 函数可以作为变量的值
  • 函数可以作为参数和返回值

defer 函数时 Go语言中类似于 java的 final一样的存在

package _func

import (
"fmt"
"math/rand"
"testing"
"time"
) func returnMultiValues() (int, int) {
return rand.Intn(10), rand.Intn(20)
} func timeSpent(inner func(op int) int) func(op int) int {
return func(n int) int {
start := time.Now()
ret := inner(n)
fmt.Println("time spent:", time.Since(start).Seconds()) // 计算 从 start 到这里 花了多少时间
return ret
}
} func slowFun(op int) int {
time.Sleep(time.Second * 1)
return op
} func TestFn(t *testing.T){
a,_ := returnMultiValues()
t.Log(a)
tsSF := timeSpent(slowFun)
t.Log(tsSF(10))
} func Sum(ops ...int) int{// 使用 可变参数 的求和函数
ret := 0
for _,op :=range ops {
ret += op
}
return ret
} func TestVarParam(t *testing.T){
t.Log(Sum(1,2,3,4))
t.Log(Sum(1,2,3,4,5,6))
} func Clear(){
fmt.Println("Clear resources.")
} func TestDefer(t *testing.T){
defer Clear()
fmt.Println("Start")
panic("err") // defer声明的 函数 会在最后执行 无论是否出错
//defer Clear()
}

Go语言基础06 _function的更多相关文章

  1. PHP语言基础06 MySql By ACReaper

    上篇介绍了如用PHP连接上MySql进行,并进行sql语句的执行.但是我们没有介绍,如何输出处理的结果,如何获得处理的结果. 这里要先说明Mysql有两种查询处理模式,一种是有缓冲的查询处理模式,一种 ...

  2. Java入门 - 语言基础 - 06.变量类型

    原文地址:http://www.work100.net/training/java-variable-type.html 更多教程:光束云 - 免费课程 变量类型 序号 文内章节 视频 1 概述 2 ...

  3. C语言基础06

    函数: 一组特定功能的代码段,之所以使用函数,为了在文件多处需要同一段代码时可以多次重复利用,减少代码冗余. //函数的声明 返回值类型 函数名称 ( 数据类型 形参1,数据类型 ,形参2 ) ; / ...

  4. [06 Go语言基础-包]

    [06 Go语言基础-包] 包 什么是包,为什么使用包? 到目前为止,我们看到的 Go 程序都只有一个文件,文件里包含一个 main 函数和几个其他的函数.在实际中,这种把所有源代码编写在一个文件的方 ...

  5. 01_C语言基础

    内容提要: 1. C语言概述2. 数据类型.运算符与表达式3. C语言程序结构 4. VC6.0使用练习 知识详解01:C语言的历史 1. C语言与其它语言比较 汇编语言: (1).可直接对硬件进行操 ...

  6. 01 C语言程序设计--01 C语言基础--第1章 C语言概述&第2章 GCC和GDB

    走进嵌入式开发的世界,企业级项目课程让你达到企业嵌入式应用开发要求.名师在线答疑,解决疑难.科学评测体系,系统评估学习.核心项目实........ 30 门课程 241小时12分钟 824 人学习 学 ...

  7. D14——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D14 20180919内容纲要: 1.html认识 2.常用标签 3.京东html 4.小结 5.练习(简易淘宝html) 1.html初识(HyperText ...

  8. D05——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D05 20180815内容纲要: 1 模块 2 包 3 import的本质 4 内置模块详解 (1)time&datetime (2)datetime ...

  9. 2008技术内幕:T-SQL语言基础 联接查询摘记

    续 2008技术内幕:T-SQL语言基础 单表查询摘记 第三章 联接查询 Microsoft SQL Server 2008 支持四种表运算符 join(ANSI标准).apply(T-SQL扩展). ...

  10. 有语言基础的人应该如何学习python?

    正好最近在学python,感觉有语言基础的话更多在乎一些语法糖,毕竟其他东西在之前应该接触过了. 笔者C++是起始语言,也接触过java.js,介绍一点python的特点吧.帮助自己巩固所学,也希望能 ...

随机推荐

  1. DolphinScheduler分布式集群部署指南(小白版)

    官方文档地址:https://dolphinscheduler.apache.org/zh-cn/docs/3.1.9 DolphinScheduler简介 摘自官网:Apache DolphinSc ...

  2. JavaFx加载本地工程图片报错

    原因有两点: 1.png或者其他格式的图片文件没有放在src的直接目录下 2.路径填错,多了个符号等 正确姿势应该是 package com.fubao.tools.fx.Stage; import ...

  3. 9组-Alpha冲刺-总结

    一.基本情况 1.1基本情况(10分): 组长博客链接:https://www.cnblogs.com/Microsoft-hc/p/15585517.html 1.2现场答辩总结 PPT上缺少了组内 ...

  4. Linux命令cURL详解,并实现文件定时上传到ftp服务器的程序

    前言 前段时间群里讨论,想实现某个文件定时上传到服务器要怎么来实现.我记得之前做过 一个项目:为高通的iot模组编写FOTA功能:实现模组可以远程下载升级镜像包,实现版本升级功能.并当时使用的一个超级 ...

  5. LVM逻辑卷创建

    创建步骤 1.创建分区 2.创建PV 3.创建VG 4.创建LV 5.格式化及挂载 创建分区 使用分区工具(如fdisk等)创建LVM分区. 创建PV $ pvcreate /dev/sdb5 #将每 ...

  6. JavaScript设计模式样例七 —— 原型模式

    原型模式(Prototype Pattern) 定义:用于创建重复的对象,同时又能保证性能.目的:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.场景:在运行期建立和删除原型. let ...

  7. 旧笔记本安装Win8.1实录

    昨天发现一台尘封已久的Lenovo ideapad Y550,给它装上了Windows 10 然后第二天系统挂掉了 挂的原因是半夜万恶之源Windows更新开始造孽了 刚好没电 文件全坏了 真 解除封 ...

  8. springjdbc处理nvarchar

    当我们使用spring-jdbc来做持久化时(注意不是spring-data-jbc),有时候一些特殊字符存入数据库时会用到nvarchar.nvarchar2这种类型(比如存放化学式,如CO₂等), ...

  9. elastersearch7.6.1搭建及基本操作详解

    搭建 修改系统参数 vim /etc/security/limits.conf * soft nofile 655350 * hard nofile 655350 * soft nofile 6553 ...

  10. AWS Data Analytics Fundamentals 官方课程笔记 - Variety, Veracity, Value

    Variety structured data applications include Amazon RDS, Amazon Aurora, MySQL, MariaDB, PostgreSQL, ...