Go语言基础06 _function
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的更多相关文章
- PHP语言基础06 MySql By ACReaper
上篇介绍了如用PHP连接上MySql进行,并进行sql语句的执行.但是我们没有介绍,如何输出处理的结果,如何获得处理的结果. 这里要先说明Mysql有两种查询处理模式,一种是有缓冲的查询处理模式,一种 ...
- Java入门 - 语言基础 - 06.变量类型
原文地址:http://www.work100.net/training/java-variable-type.html 更多教程:光束云 - 免费课程 变量类型 序号 文内章节 视频 1 概述 2 ...
- C语言基础06
函数: 一组特定功能的代码段,之所以使用函数,为了在文件多处需要同一段代码时可以多次重复利用,减少代码冗余. //函数的声明 返回值类型 函数名称 ( 数据类型 形参1,数据类型 ,形参2 ) ; / ...
- [06 Go语言基础-包]
[06 Go语言基础-包] 包 什么是包,为什么使用包? 到目前为止,我们看到的 Go 程序都只有一个文件,文件里包含一个 main 函数和几个其他的函数.在实际中,这种把所有源代码编写在一个文件的方 ...
- 01_C语言基础
内容提要: 1. C语言概述2. 数据类型.运算符与表达式3. C语言程序结构 4. VC6.0使用练习 知识详解01:C语言的历史 1. C语言与其它语言比较 汇编语言: (1).可直接对硬件进行操 ...
- 01 C语言程序设计--01 C语言基础--第1章 C语言概述&第2章 GCC和GDB
走进嵌入式开发的世界,企业级项目课程让你达到企业嵌入式应用开发要求.名师在线答疑,解决疑难.科学评测体系,系统评估学习.核心项目实........ 30 门课程 241小时12分钟 824 人学习 学 ...
- D14——C语言基础学PYTHON
C语言基础学习PYTHON——基础学习D14 20180919内容纲要: 1.html认识 2.常用标签 3.京东html 4.小结 5.练习(简易淘宝html) 1.html初识(HyperText ...
- D05——C语言基础学PYTHON
C语言基础学习PYTHON——基础学习D05 20180815内容纲要: 1 模块 2 包 3 import的本质 4 内置模块详解 (1)time&datetime (2)datetime ...
- 2008技术内幕:T-SQL语言基础 联接查询摘记
续 2008技术内幕:T-SQL语言基础 单表查询摘记 第三章 联接查询 Microsoft SQL Server 2008 支持四种表运算符 join(ANSI标准).apply(T-SQL扩展). ...
- 有语言基础的人应该如何学习python?
正好最近在学python,感觉有语言基础的话更多在乎一些语法糖,毕竟其他东西在之前应该接触过了. 笔者C++是起始语言,也接触过java.js,介绍一点python的特点吧.帮助自己巩固所学,也希望能 ...
随机推荐
- 一直让 PHP 程序员懵逼的同步阻塞异步非阻塞,终于搞明白了
大家好,我是码农先森. 经常听到身边写 Java.Go 的朋友提到程序异步.非阻塞.线程.协程,让系统性能提高到百万.千万并发,使我甚是惊讶属实羡慕.对于常年写 PHP 的我来说,最初听到这几个词时, ...
- 一文搞懂DevOps、DataOps、MLOps、AIOps:所有“Ops”的比较
引言 近年来,"Ops"一词在 IT 运维领域的使用迅速增加.IT 运维正在向自动化过程转变,以改善客户交付.传统的应用程序开发采用 DevOps 实施持续集成(CI)和持续部署( ...
- .NET 9 优化,抢先体验 C# 13 新特性
前言 微软即将在 2024年11月12日发布 .NET 9 的最终版本,而08月09日发布的.NET 9 Preview 7 是最终发布前的最后一个预览版.这个版本将与.NET Conf 2024一同 ...
- Tree组件的快速定位更新节点的状态,以及修改节点的数据属性等操作
当我们点击树节点的时候我们常常只能获得树的id,那么我么如何获快速定位到树节点的内容呢,除此之外,当树已经存在时,但是缺少我们想要的内容时,我们想在树节点上添加我们需要的额外的内容时该怎么办,那么就是 ...
- Dev-C++ 安装教程
下载地址:https://sourceforge.net/projects/orwelldevcpp/ 下载完成,在指定的下载位置有一个安装包: 双击开始安装程序 安装是默认英文安装即可,在启动后可以 ...
- Dell R920 服务器iDrac口默认账号密码和IP
Dell服务器iDrac口默认账号密码和IP 账号:root 密码:calvin IP:192.168.0.120/24
- C# – class, filed, property, const, readonly, get, set, init, required 使用基础
前言 心血来潮,这篇讲点基础的东西. Field 比起 Property,Field 很不起眼,你若问 JavaScript,它甚至都没有 Field. 但在 C#,class 里头真正装 value ...
- Azure 入门系列 (第一篇 Virtual Machine 和 SQL Server)
前言 终于有机会自己搞 Azure 了. 以前都是找代理做,近期代理 support 越来越弱了. 看来是 right time 自己搞了. 以前写过一些关于 Azure 的笔记: Azure key ...
- 人脸识别 face detect & recognize
前言 最近有一个项目要升级. 它是一个在线教育的 web app. 由于学生年龄小, 不适合用 username/password 这种方式做登入. 所以项目开始之初是使用 RFID 来登入的. 但由 ...
- Haproxy详解以及基于Haproxy的高可用实战
1.Haproxy与Keepalived VRRP 介绍 软件:haproxy 主要是做负载均衡的7层,也可以做4层负载均衡 apache也可以做7层负载均衡,但是很麻烦.实际工作中没有人用. ngi ...