首页 > 其他分享 >Go语言的type func()用法

Go语言的type func()用法

时间:2023-05-07 23:44:34浏览次数:34  
标签:函数 int 类型 func Go type op

golang通过type定义函数类型

在 Go 语言中,type 可以定义任何自定义的类型

比如熟悉的:type dog struct{}type myInt int 等等

所以 func 也是可以作为类型自定义的,type myFunc func(int) int,意思是自定义了一个叫 myFunc 的函数类型,这个函数的签名必须符合输入为 int,输出为 int。

golang通过type定义函数类型

通过 type 可以定义函数类型,格式如下

type typeName func(arguments) retType

函数类型也是一种类型,故可以将其定义为函数入参 ,在 go 语言中函数名可以看做是函数类型的常量,所以我们可以直接将函数名作为参数传入的函数中。

demo

package main

import "fmt"

//add函数也实现了op的函数签名,可以被认为是op的一种实现
func add(a, b int) int {
	return a + b
}

//sub符合op的签名,所以函数名可以看成是 op 类型的常量或者实现
func sub(a, b int) int {
	return a - b
}

//定义函数类型 op 的签名
type op func(a, b int) int

//这个函数的第一个参数指定了一个函数签名op,只要符合op函数签名的函数,就可以作为参数传入
func Oper(fu op, a, b int) int {
	return fu(a, b)
}

func main() {
	//在go语言中函数名可以看做是函数类型的常量,所以我们可以直接将函数名作为参数传入的函数中。
	aa := Oper(add, 1, 2)
	fmt.Println(aa)
	bb := Oper(sub, 1, 2)
	fmt.Println(bb)
}

标签:函数,int,类型,func,Go,type,op
From: https://www.cnblogs.com/guangdelw/p/17380500.html

相关文章

  • Go语言(Golang)编写最简单的命令行工具
    最简单的命令行工具项目预览>echoabc123--name=nickabc123--name=nick课程概述如何制作命令行应用如何使用os.Args获得命令行参数前提条件懂得Go语言基本语法知识点OS包提供了用于处理操作系统相关内容的函数/值独立于平台的方式os.Args变量获......
  • Go Web 基础--原理总结
    Web的工作方式对于普通的上网过程:浏览器本身是一个客户端,当你输入URL的时候,首先浏览器会去请求DNS服务器,通过DNS获取相应的域名对应的IP,然后通过IP地址找到IP对应的服务器后,要求建立TCP连接,等浏览器发送完HTTPRequest(请求)包后,服务器接收到请求包之后才开始处理......
  • Golang new 和 make 函数
    在Golang中new()函数是另外一种创建变量的方式,内建的new(T)函数为一个T类型的新项分配了"零"存储,并返回其地址,即*T类型的值。用Go的术语来说,它返回一个指向新分配的T类型的零值的指针。Golangnew()函数函数语法:funcnew(Type)*Typenew()返回的内存是清零的。ne......
  • go学习
    1. Go语言采用是否大小写首字母来区分符号是否可以被导出。 2. vard=[...]int{1,2,4:5,6}//定义长度为6的int型数组,元素为1,2,0,0,5,6 这种初始化很少用吧 3. 用 forrange 方式迭代的性能可能会更好一些,因为这种迭代可以保证不会出现数组越......
  • Django操作session和中间件以及csrf跨站服务
    Django操作session#cookie保存在浏览器,数据不安全session可以将用户信息保存在服务端,基于cookie工作的1.用户信息认证2.生成随机字符串3.随机字符串和用户信息绑定一起,保存,默认在mysql4.把随机字符串返回到浏览器,将其保存,再次访问直接带其一起传输至服务端,服务端用其进......
  • django-datatable-view==0.9.0 Django 3.1.3: ImportError:无法导入名称'FieldDoesNot
    问题答案来自于:https://cloud.tencent.com/developer/ask/sof/891274源码:fromdjango.db.models.fieldsimportFieldDoesNotExist 替换:fromdjango.core.exceptionsimportFieldDoesNotExist......
  • [Typescript] Testing type
    1.TSD:https://github.com/SamVerschueren/tsdimport{expectType}from'tsd';importconcatfrom'.';expectType<string>(concat('foo','bar'));expectType<string>(concat(1,2)); 2.Vitest:https://vit......
  • [Typescript] Builder pattern 07- Reducer
    import{Expect,Equal}from"../types/utils"import{expect,it}from'vitest';typePayloadsToDiscriminatedUnion<TextendsRecord<string,any>>={[KinkeyofT]:{type:K}&T[K];}[keyofT];exportclas......
  • [React Typescript] ComponentProps
    Blog:https://www.totaltypescript.com/react-component-props-type-helper GetanyProptypefromhtmlelement:import{ComponentProps}from"react";typeButtonProps=ComponentProps<"button">; GetpropstypefromaComponen......
  • Django笔记三十七之多数据库操作(补充版)
    本文首发于公众号:Hunter后端原文链接:Django笔记三十七之多数据库操作(补充版)这一篇笔记介绍一下Django里使用多数据库操作。在第二十二篇笔记中只介绍了多数据库的定义、同步命令和使用方式,这一篇笔记作为补充详细介绍如何对Django系统的多个数据库进行针对的建表同步操......