[Go] golang结构体成员与函数类型

package main

import (
	"fmt"
)

//定义一个类型
type tsh struct {
	//定义成员,类型是func() string
	test func() string
}

//定义一个函数,获取tsh类型
func New(fn func() string) *tsh {
	return &tsh{
		test: fn,
	}
}
func cre() string {
	return fmt.Sprintf("%s,来了", "tsh")
}

func main() {
	//new完得到tsh类型,调用该结构体的test成员,该成员是个函数
	res := New(cre).test()
	fmt.Println(res)
}

某些类的逻辑非常复杂,简化代码帮助理解下逻辑  

原文地址:https://www.cnblogs.com/taoshihan/p/10408668.html

时间: 2024-11-05 16:10:32

[Go] golang结构体成员与函数类型的相关文章

golang 结构体嵌入和匿名成员

考虑一个二维的绘图程序,提供了一个各种图形的库,例如矩形.椭圆形.星形和轮形等几 何形状.这里是其中两个的定义 type Circle struct { X, Y, Radius int } type Wheel struct { X, Y, Radius, Spokes int } 一个Circle代表的圆形类型包含了标准圆心的X和Y坐标信息,和一个Radius表示的半径信 息.一个Wheel轮形除了包含Circle类型所有的全部成员外,还增加了Spokes表示径向辐条的 数量.我们可以这样创

Golang中函数结构体,将函数转换为接口

函数结构体,将函数转换为接口 定义一个函数类型 F,并且实现接口 A 的方法,然后在这个方法中调用自己.这是 Go 语言中将其他函数转换为接口 A 的常用技巧(参数返回值定义与 F 一致) 实现一个动态生成的"回调函数",比如缓存中,当key不存在,则需要从数据库或文件等远程数据源中取数据.所以回调函数不能写死. 采用用户自定义回调函数的方法,因此,在缓存的数据结构中,有一个成员方法变量为回调函数. 下面这段代码就是一个示例. type Getter interface { Get(k

(struct)结构体变量作为函数参数调用的方法小结

结构体变量.结构指针变量.结构数组作为函数的参数应用实例分析 struct stud { long int num; float score; }; /*结构体变量作为函数的参数,修改之后的成员值不能返回到主调函数*/ void funvr(struct stud t) { t.num=2000101; t.score=71.0; } /*结构体数组作为函数的参数,修改后的元素的成员值能返回到主调函数*/ void funar(struct stud t[]) //void funar(stru

FFmpeg源码简单分析:结构体成员管理系统-AVOption

===================================================== FFmpeg的库函数源码分析文章列表: [架构图] FFmpeg源码结构图 - 解码 FFmpeg源码结构图 - 编码 [通用] FFmpeg 源码简单分析:av_register_all() FFmpeg 源码简单分析:avcodec_register_all() FFmpeg 源码简单分析:内存的分配和释放(av_malloc().av_free()等) FFmpeg 源码简单分析:常

FFmpeg源代码分析:结构体成员管理系统-AVOption

本文继续上篇文章<FFmpeg源代码分析:结构体成员管理系统-AVClass>中的内容,记录FFmpeg中和AVOption相关的源代码.AVOption用于在FFmpeg中描述结构体中的成员变量.一个AVOption可以包含名称,简短的帮助信息,取值等等. 上篇文章简单回顾 上篇文章中概括了AVClass,AVOption和目标结构体之间的关系.以AVFormatContext为例,可以表示为下图. 有关上篇文章的内容,这里不再重复.总体来说,上篇文章主要概括了AVClass,AVOptio

结构体中定义函数指针

转自:http://blog.csdn.net/unix21/article/details/9293877 结构体指针变量的定义,定义结构体变量的一般形式如下: 形式1:先定义结构体类型,再定义变量 struct结构体标识符 { 成员变量列表;… }; struct 结构体标识符 *指针变量名; 变量初始化一:struct结构体标识符 变量名={初始化值1,初始化值2,…, 初始化值n }; 形式2:在定义类型的同时定义变量 struct结构体标识符 { 成员变量列表;… } *指针变量名;

结构体指针和结构体成员指针

在添加sqlite3的加解密功能函数时,由于网上资料针对的版本是旧版sqlite3源码,现在新版上做修改遇到了一个宏,该宏是旧版上的,它作用是由结构体成员指针pData找到它所属的结构体指针.下面转的文章详解了这种机制. 1.通过结构体成员指针寻找其所属结构体指针 转自http://blog.csdn.net/mycwq/article/details/9327743 宏CONTAINING_RECORD,可以直接根据结构体成员指针找到结构体指针. 我们看一下它的定义: 1 #define CO

C语言中访问结构体成员时用‘.’和‘-&gt;’的区别

举个例子,定义了一个叫Student,别名为stu的结构类型,我们声明了一个结构体变量叫stu1,声明了一个结构体指针为stuP. typedef struct Student { char name[N]; int id; int score; struct Student *next; } stu; stu stu1; stu* stuP; 那么我们访问他们的结构体成员时要这样 stu1.name="Xiao Ming"; stu1.id=2015211; stuP->nam

指针直接赋值为整型AND利用宏定义求结构体成员偏移量

首先我们要更正一个很熟悉的概念,那就是指针不仅仅是“地址”,指针还有一个很重要的特性,那就是“类型”. 指针初始化时,“=”的右操作数必须为内存中数据的地址,不可以是变量,也不可以直接用整型地址值(但是 int *p = 0; 除外,该语句表示指针为空): 所以 int *p = 10; 这样的代码是不允许的.在C++里面直接是error的,即使在一些C编译器中以warning的形式提示,但是warning有的时候也很严重.所以这种东西不要用.从const int到int*是不存在隐士转换的.