Go语言中文网 为您找到相关结果 155

go语言初始化内部结构体3中方式

1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 type User struct { 8 Id int 9 Name string 10 Age int 11 } 12 13 type Manger struct { 14 User 15 title string 16 } 17 18 func main() { 19 m := Manger{User:User{1, "ok", 12}, title:"123"} //可以 20 m2 := Manger{User{1, "ok", 12}, "123"} //可以 21 m3 := Manger{User:User{Id:1, Name:"ok", Age:12}, title:"123"} //可...阅读全文

博文 2015-05-14 03:00:00 or2-

golang 接口interface{}、断言、switch type

interface{} 可以接受任何类型的对象值 获取interface{}队形的数据类型,可以使用断言,或者 switch type 来实现 // Assertion project main.go package main import ( "fmt" ) type Bag struct { Key string } type Bag2 struct { Key int } func main() { var b1 interface{} var b2 interface{} b1 = Bag{Key: "1"} b2 = Bag2{Key: 0} //获取interface{}中存放的数据类型 //方法一: { //判断是否是Bag类型 若不是则置0 b, ok := b1.(Bag)...阅读全文

博文 2016-03-03 16:00:01 xia_xing

go-parser-语法分析

每一种语言都会有一个定义良好的语法结构.函数是由申明和语句构成的,而语句又是由表达式构成的.经常用来描述语法的是BNF[1].Go使用的是相应的变种,在Go的官方文档中有很详细的spec描述[2].一门语言的设计其实就在这份描述当中,这是一门语言的语法和规则的定义,是表面程序员可以接触到的部分,而运行时却可以改变,这相当于和程序员约定的接口,只要按照这个接口编写源代码,就能产生正常可以编译的二进制文件,但是最后的二进制文件如何运行,对于每条语法转换成了什么,有什么优化都是编译器优化和运行时的工作.所以一门语言必须有一个详尽的描述,这和一个网络协议一样,是非常重要的部分. 语法分析器也是有工具可以自动生成的,比如yacc[3].我在之前提到过使用工具的利弊,就不赘述了. 本文主要看一下Go的语...阅读全文

博文 2016-04-12 10:32:40 yueyue.gao

Go语言for```range方法遍历map,遍历打印值与map实际存储值不同

> 今天编写了map结构数据存储程序,map的key总数:22046个,通过for```range方法遍历map发现,遍历打印的结果与实际存储内容不符,主要是存储结果数量和值正确,打印出来的值少了。 - 以下是打印结果 ```go keys:0xE7A0 values:0x942E keys:0xE9E6 values:0x6B92 keys:0xF5F2 values:0x8E9C keys:0xF7F0 values:0x9EDF ======================= 以上使用range遍历结果 ==================== 获取0xFE4E值:0xFA28 总数:22046 ``` - 以下是存储数据结构示意 ...阅读全文

《Go语言编程入门》视频课程开课了

作为拥有多年工作经验的运维老鸟,我没有选择运维常用的Python作为我今后的主要使用语言。Python编写运维程序的开发效率虽然很高,但随着代码量的增大,以及Python的缩进式语法结构,可读性和维护性并不很高。加之Python本身的设计,并不原生支持多线程多核,我考虑到当程序代码达到一定规模时,必然会考虑它的执行效率和维护成本。最终放弃了Python,选择语言的过程中被Google新出的Go语言吸引了。Go本身脱胎于C,语法和C比较像,我本身就一直学习和编写C和PHP程序,习惯了大括号的语法结构。同时Go吸收了其它各种语言的优秀特性,在各种特性之间做了折衷。加之原生支持多核多线程,执行效率几近于C。加之Go的标准库,以及市面主流的应用软件方面,比如MySQL、Redis等等函数库都已稳定,...阅读全文

golang中struct关于反射tag

package main import ( "fmt" "reflect" ) type User struct { name string `json:name-field` age int } func main() { user := &User{"John Doe The Fourth", 20} field, ok := reflect.TypeOf(user).Elem().FieldByName("name") if !ok { panic("Field not found") } fmt.Println(getStructTag(field)) } func getStructTag(f reflect.StructField) string { return string(...阅读全文

博文 2015-06-17 20:03:06 paladinosment

Golang实现红黑树

盼望已久的五一终于到来了!我一直在考虑要不要利用这几天时间好好睡上一觉,习惯成自然,宅也是如此。睡觉都觉得无聊的时候,就有了写点什么的念头。也借此机会提高一下写作能力,看看什么时候能写一部长篇小说。 用Golang实现红黑树算是一次尝试,毕竟工作环境没用到,不知道以后会不会用。自己也是看着玩,开阔一下思路。从我开始看Golang的doc到写这篇文章利用的是大概2周中的业余时间,所以Golang的语法掌握的还有欠缺;很多特性,例如高并发等都还没有测试,如文中出现错误或不合理的地方,请指正。 本文应用的基本逻辑参考自wiki的红黑树,依据golang的语言特性部分结构可能稍有改动。同时这篇文章里也加入了我在实现过程中的想法和实现时可能会遇到的问题。wiki上的红黑树中文版本,不过建议直接看英文版...阅读全文

博文 2016-05-03 14:00:03 happywjh666

GO函数的使用

熟悉Go函数的语法结构 因为GO没有类的概念,所以使用结构体来模拟。代码中的函数分别计算两个整数的平方根和取数值的绝对值。 package main import ( "fmt" "math" ) type MyFloat float64 type Vertex struct { X, Y float64 } //Vertex指针对应的Abs方法 func (v *Vertex) Abs() float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y) } //MyFloat结构体对应的Abs方法 func (f MyFloat) Abs() float64 { if f < 0 { return float64(-f) } return float64(f) ...阅读全文

博文 2016-04-17 00:00:01 genispan

golang的反射机制

go反射 什么是反射?使用反射可以实现什么功能? 反射提供了一种可以操作任意类型数据结构的能力。通过反射你可以实现对任意类型的深度复制,可以对任意类型执行自定义的操作。另外由于golang可以给结构体定义tag熟悉,结合反射,于是就可以实现结构体与数据库表、结构体与json对象之间的相互转换。 使用反射需要注意什么事情? 使用反射时需要先确定要操作的值是否是期望的类型,是否是可以进行“赋值”操作的,否则reflect包将会毫不留情的产生一个panic。 struct initializer示例 go-struct-initializer 是我在学习golang反射过程中实现的一个可以根据struct tag初始化结构体的go library,这里对其中用到的反射技术做一下说明 package...阅读全文

博文 2016-10-04 05:00:03 ylwh8679

go语言的hashmap

go语言中map的数据结构,以下只摘取了关键的几个属性: struct Bucket { uint8 tophash[BUCKETSIZE]; // top 8 bits of hash of each entry (0 = empty) Bucket *overflow; // overflow bucket, if any byte data[1]; // BUCKETSIZE keys followed by BUCKETSIZE values }; struct Hmap { uint8 B; // log_2 of # of buckets (can hold up to LOAD * 2^B items) byte *buckets; // array of 2^B Bucket...阅读全文

博文 2015-05-18 03:00:01 richmonkey

[golang]自己动手实现ini文件读取

最近迷恋go语言,但我是个编程菜鸟,这个读取参考了beego的config,只是半成品,不过能够正常运行。 接口的设计 type Parser interface { Parse() error } type Config interface { GetString(string)string Parser } 目前只支持最小操作,解析和获取。在读取之前,要让config实例化一个对象: var config Config func RegisterConfig(mode,path string){ switch mode{ case "ini": config=ini.NewIniConfig(path) case "json": case "xml": default: panic("D...阅读全文

博文 2015-06-19 23:00:29 cb741044015

Go 语言的 CMS 工具库 Qor

Qor 是基于 Golang 开发的的CMS 一系列工具库,基于 Qor可以快速搭建网站的后台管理系统。 Qor 的工作库包含: 1,后台管理:可以对数据库进去 CURD 管理,支持一对一,一对多,多对多关联关系维护等等 2,支持上传图片到云以及 filesystem,resize、crop 图片等等 3,Publish 发布系统,可以修改数据,并且经过检查后,再发布到正式环境中 4,状态机,可以用于开发工作流的系统 5,I18n,翻译,可以通过在 WEB 界面翻译,并将翻译保存到数据库中 6,L10n,本地化,不同于翻译,他可以针对某个地区来对内容,或者数据结构进行本地化。 7,Roles,权限管理 8,Exchange,通过 Excel,CSV 导入导出数据 9,Wo...阅读全文

《Go语言编程入门》视频课程打折优惠了

作为拥有多年工作经验的运维老鸟,我没有选择运维常用的Python作为我今后的主要使用语言。Python编写运维程序的开发效率虽然很高,但随着代码量的增大,以及Python的缩进式语法结构,可读性和维护性并不很高。加之Python本身的设计,并不原生支持多线程多核,我考虑到当程序代码达到一定规模时,必然会考虑它的执行效率和维护成本。最终放弃了Python,选择语言的过程中被Google新出的Go语言吸引了。Go本身脱胎于C,语法和C比较像,我本身就一直学习和编写C和PHP程序,习惯了大括号的语法结构。同时Go吸收了其它各种语言的优秀特性,在各种特性之间做了折衷。加之原生支持多核多线程,执行效率几近于C。加之Go的标准库,以及市面主流的应用软件方面,比如MySQL、Redis等等函数库都已稳定,...阅读全文

Go 实现常见数据结构

1. [二叉搜索树](https://flaviocopes.com/golang-data-structure-binary-search-tree) 2. [字典](https://flaviocopes.com/golang-data-structure-dictionary) 3. [图](https://flaviocopes.com/golang-data-structure-graph) 4. [哈希表](https://flaviocopes.com/golang-data-structure-hashtable) 5. [链表](https://flaviocopes.com/golang-data-structure-linked-list) 6. [队列](h...阅读全文

golang小程序试验(五)

1. golang的指针 可以将unsafe.Pointer转换成uintptr,然后变相做指针运算 package main import "fmt" import "unsafe" type User struct { Id int Name string } func main() { u := &User{1, "tom"} var up uintptr = uintptr(unsafe.Pointer(u)) + unsafe.Offsetof(u.Name) var name *string = (*string)(unsafe.Pointer(up)) fmt.Println(*name) } 2. package io 实现了io.Reader或io.Writer接口的类型(...阅读全文

博文 2014-10-04 19:27:15 壬癸甲乙

Go 解析XML

今天看了看XML的解析,挺别致的和C++,Java之类的解析很是不同。 GO中将XMl的结构解析成一个数据结构,类似于一个结构体。 package main import ( "encoding/xml" "fmt" "os" ) type Address struct { City, State string } type Person struct { XMLName xml.Name `xml:"person"` Id int `xml:"id,attr"` FirstName string `xml:"name>first"` LastName string `xml:"name>last"` Age int `xml:"age"` Height float32 `xml:"heig...阅读全文

博文 2016-01-15 17:00:03 king1076

Go-数组

示例 Go的数组要求只能是单一数据类型,这和脚本语言有些差别,而与传统编译型语言一致。 package main import "fmt" func main() { var a [5]int var size = len(a) for i := 0; i < size; i++ { a[i] = i + 1 fmt.Println("a[%d]=%d", i, a[i]) } total := 0 for i := 0; i < len(5); i++ { total += a[i] } average := total / len(5) fmt.Println("average:", average) } range 数组的另一种遍历方式,用range:——In each iterat ...阅读全文

博文 2016-10-20 04:00:03 u013344915

go中接口与继承的选择

Go语言中没有继承,但是可以用结构体嵌入实现继承,还有接口这个东西。现在问题来了:什么场景下应该用继承,什么场景下应该用接口。 问题描述 这里从一个实际的案例出发。网游服务器中的一个例子。假设每个实体都有一个ObjectID,packet中都有使用到这个ObjectID,客户端与服务端之间通过这个ObjectID知道是一个什么实体。用面向对象的观点,就是有一个Object对象,里面有getObjectID()方法,所有对象都是继承自Object对象。 Creature继承Object,表示游戏中的生物。然后像Monster,NPC,都继承自Creature的。玩家分为三个种族,Slayer/Vampire/Ouster三个不同的类实现,继承自Creature。 Item也继承自Object,...阅读全文

博文 2017-06-01 02:03:26 徐学良

Go 语言 make & new

make 与 new 都是 Go 语言分配变量内存的方式,其中 make 主要针对 slice、map 与 chan 变量类型的内存分配以及相应内部结构的初始化,而 new 可以申请任何类型变量内存,但是拿到内存后会赋零值,他对于 slice、map 以及 chan 类型变量的申请没有太大意义。下面依据实际示例对这两种内存分配方式的区别进行个简单分析。 分配 sclie var s0 []int s0 = append(s0, 10) fmt.Println(&s0, s0) s1 := new([]int) *s1 = append(*s1, 10) fmt.Println(s1, *s1) s2 := make([]int, 0) s2 = append(s2, 10) fmt.Prin...阅读全文

博文 2015-12-10 16:00:31 u013148156

golang container heap&sort

go语言也自己的容器数据结构。主要有list、heap和ring package main import ( "container/heap" "fmt" "sort" // "strconv" ) type HeapInt []int func (h HeapInt) Len() int { return len(h) } func (h HeapInt) Less(i, j int) bool { return h[i] < h[j] } func (h HeapInt) Swap(i, j int) { h[i], h[j] = h[j], h[i] } func (h *HeapInt) Push(x interface{}) { *h = append(*h, x.(int)) }...阅读全文

博文 2014-12-30 22:00:01 guhao123

让我们一起Go(四)

一、如何Go语言中声明变量 首先,我们创建一个新的Go语言的文件,命名为variable.go,这里你或许会问为什么叫这么个名字,如果你不认识这个单词可以立刻去查下。查完了相信你就知道意思了。建立好文件后,用你喜欢的文本编辑器或者ide开始跟着我一起练习吧。 如果你还记得前几篇的内容,相信你已经会写Go语言的基本程序结构了,如果不记得了,再去复习下吧。或者你懒得回去再看,就继续往下看,不过建议你最好还是复习下之前的,反正本系列文章都很短小,虽谈不上精悍,但是还是有其唯一好处,看看还是比较快的。 快速记忆基本结构: 1 package main 2 import "fmt" 3 func main(){ 4 5 fmt.Print("hello go") 6 7 } 声明变量的第一个例子: 以...阅读全文

博文 2015-07-08 17:00:01 a6652162

Go 多返回值

Go语言革命性地在静态开发语言阵营中率先提供了多返回值功能。这个特性让开发者可以从原来用各种比较别扭的方式返回多个值的痛苦中解脱出来,既不用再区分参数列表中哪几个用于输入,哪几个用于输出,也不用再只为了返回多个值而专门定义一个数据结构。 package main import "fmt" func vals() (int, int) { return 3, 7 } func main() { a, b := vals() fmt.Println(a) fmt.Println(b) _, c := vals() fmt.Println(c) } 123456789101112131415 package mainimport "fmt" func vals() (int, int) { ret...阅读全文

Go语言学习笔记(三) [控制结构、内建函数]

日期:2014年7月21日 一、控制结构 1、Go中,只有几个控制结构,它没有do或者while循环,有for,灵活的switch语句和if,在switch中可以接受像for那样可选的初始化语句,另外Go中还提供了类型选择和多路通信转接器的select。Go的控制结构的语法和C相比有所不同,它不需要圆括号,但语句体必须总是包含在大括号内。 2、控制结构语法 1)if-else (1)if后紧跟单个条件 例如:if x > 0 { //{必须和if在同一行,这是Go语法规定的,如果换行写,编译就会报错 return y } else { return x } (2)if后接受初始化语句 例如: m1:=7 if n1:=9; n1 >= m1 { fmt.Print("n1 >= m1") }...阅读全文

博文 2014-10-22 17:00:00 whxaing2011

数据结构-(队列顺序存储)循环队列的实现(golang)

import ( "errors" ) //循环队列结构体(顺序存储) type CirularQueue struct { elem []ElemType //储存的数据 front int //头指针 rear int //尾指针 } //初始化循环队列 func InitCQueue() *CirularQueue { cqueue := new(CirularQueue) cqueue.elem = make([]ElemType, MAXSIZE) cqueue.front = 0 cqueue.rear = 0 return cqueue } //清空循环队列 func (cqueue *CirularQueue) ClearCQueue() { cqueue.front = 0...阅读全文

博文 2017-02-09 16:59:44 卑微了承诺-life

golang heap container balance request

package main import ( "container/heap" "fmt" "log" "math/rand" "time" ) const ( MaxQueueLength = 10 MaxRequesters = 2 Seconds = 2e9 ) type Request func() func main() { requests := make(chan Request) for i := 0; i < MaxRequesters; i++ { go requester(requests) } NewBalancer(2).Balance(requests) } func requester(work chan Request) { for { time.Sleep(t...阅读全文

博文 2015-10-17 03:00:00 bnbqian

boltdb 源码分析-数据结构-1

boltdb 数据结构 boltdb暴露给用户的数据概念较少,只有以下: Options 初始化boltdb时的相关配置选择; DB 整个boltdb的持有者,跟boltdb相关操作都要通过调用其方法发起,是boltdb的一个抽象; Stats 调用DB.Stats()方法返回的数据结构,内包含一些boltdb内部的计数信息,可以供用户查看; Bucket 类似于表的一个概念,在boltdb相关数据必须存在一个Bucket下,不同Bucket下的数据相互隔离,每个Bucket下 有一个单调递增的Sequence,类似于自增主键; BucketStats Bucket的一些统计信息; Tx boltdb的事务数据结构,在boltdb中,全部的对数据的操作必须发生在一个事务之内,boltdb的并...阅读全文

博文 2017-06-02 03:23:15 lrita

GO 语言如何处理任意结构的 JSON 数据

现有的模块只能处理固定格式的数组,也就是可以用一个结构 sruct 描述的数据结构,这些数据是由这种结构的数据排列而成。 事实上,很多 JSON 数据结构并不是固定的,例如语法树。 ["Spp",["Rules",[["Assert","^"],["Rept",["+",["Branch",[["Rtoken","_"],["Ntoken","Spec"]]]]],["Assert","$"]]]] 大家有没有遇到过这种情况?如果遇到了,是如何解决的呢? ...阅读全文

Go语言结构struct(普及golang)

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 1.struct 简洁 这个的struct和C语言的很相似,模拟出class的功能,但是不完全的!没有构造函数等! 2.struct的申明 [php] package main import "fmt" type Person struct { Age int Name string } func main() { //初始化两种 a := Person{} a.Age = 2 a.Name = "widuu" fmt.Println(a) b := Person{ Age: 24, Name: "widuu", } fmt.Println(b) } [/php] 3.go指针操作 如下我们要...阅读全文

Go语言程序结构

Go程序主要由以下几部分组成: 包声明 导入包 函数 变量 语句和表达式 注释 让我们来看看,将打印字的简单 "Hello World" 的代码: package main import "fmt" func main() { /* This is my first sample program. */ fmt.Println("Hello, World!") } 让我们来看看上面的程序的各个部分: 程序包体的第一行定义了这个程序包的名称。这是一个必须声明为Go程序运行在什么包。main包是起始点来运行程序。每个包都有一个与之关联的路径和名称。 下一行import "fmt" 是告诉编译器去包含文件在包fmt的预处理命令。 下一行 func main()主要功能是为程序执行的开始。 下一行/...阅读全文

博文 2016-07-05 05:00:15 vper

高频率抽样统计工具 cpustat

cpustat 是一个高频率抽样统计工具,目前支持的平台只有Linux。用来统计CPU的利用率,可以以表格形式或者动态滚动显示数据。 ![Text Mode](http://static.oschina.net/uploads/img/201603/07160722_blcW.jpg) ![Demo](http://static.oschina.net/uploads/img/201603/07160727_DQgD.jpg) 功能结构图: ![image](http://static.oschina.net/uploads/img/201603/07160737_1jjO.png...阅读全文

go 速学 - 11 - 结构

目录 结构 概念 创建结构 使用结构 值传递 匿名结构 结构的组合 概念 定义一个组合 使用组合 摘要 定义结构,使用结构,值传递与指针传递,匿名结构,结构的组合 结构 概念 Go 中没有 class 的概念,结构可以完成类似功能 支持指向自身的指针类型成员 支持匿名结构 支持 == 和 != 运算符 创建结构 格式 type struct{} type person struct { name string age int } 使用结构 结构变量的各个字段都会有默认值 p1 := person{name: "Jack"} p1.name = "Peter" //p1 {Peter 0} 值传递 参数中的结构默认为值传递 p2 := person{name: "Jack", a...阅读全文

博文 2015-04-25 03:00:00 mrseasons

Go 控制结构

在 Go 中只有很少的几个控制结构 。这里没有 do 或者 while 循环,只有 for。有(灵活的) switch 语句和 if,而 switch 接受像 for 那样可选的初始化语句。还有叫做类型选择和多路通讯转接器的 select。同 C 相比语法有所不同:无需圆括号,而语句体必须总是包含在大括号内。 1、if-else Go 中的 if 和 C 语言中的 if 很相似,区别主要有三点: 执行体必须要有大括号,且左大括号必须和 if(或 else) 在同一行即使只有一条语句; 条件语句不需要圆括号; 条件语句中可以包含初始化语句,通常用于设置一个(局部)遍量。 if x > 0 { // 左括号必须在同一行 return y } else { return x } if f, err...阅读全文

博文 2016-04-16 14:00:02 abc123man

Golang初级系列教程-控制结构-defer语句

Golang初级系列教程-控制结构-defer语句 defer 语句是用来在函数返回之前执行特定功能的关键字。有啥用处呢?在编程时,通常需要 allocate/block/lock 资源,但是当程序崩溃时,代码无法执行到 un-allocate/unblock/unlock 资源的地方,可能导致死锁等问题得发生。通过使用 defer 语句,可以保证无论什么情况发生,这些资源总是会被释放的。 在下面的代码中,假设要执行一系列的数据库操作:打开数据库连接,执行操作。之后假设,数据库操作出现异常,程序会立即返回。如果什么也不做,数据库连接将会一直持续,如果使用 defer 语句,可以保证在程序返回之前,数据库连接被正确的关闭。 package main import "fmt" func conn...阅读全文

博文 2016-04-29 15:00:03 DowntownGuy

go语言总结第一章

需要注意的地方:1.整型数据的溢出; 一个int8型整数的最大值是127,如果在加上一就是-128.2.特殊类型:复数: 复数实际上由两个浮点数构成,一个表示实部,一个表示虚部。3.Go语言规定,函数,控制结构等的左大括号“{”必须和函数声明或控制结构放在同一行。如果将左大括号放在函数声明,控制语句的下一行,编译器会在左大括号的前方自动加一个大括号,可能导致程序异常。4.Go对多语言的支持。5.函数名首字母为小写,即为private 函数名首字母为大写,即为publi...阅读全文

Go自学团队:Day 2:函数声明,流程控制

``` package main //go 语言控制结构 import ( "fmt" "math" ) const ( name string = `sunlong` age int = 10 height int = 180 ) func main() { //fmt.Print( name ) //var age int = 10; //使用函数 control_if() var score = control_switch(20) fmt.Print( "\r\n 你的结果是:" ,score ) control_for() } func control_if(...阅读全文

golang解析复杂结构

怎样把以下的结构解析成go的数组或者其他的数据结构,章节可能有很多层不固定,我尝试了几种方式都不成功,对go不熟悉,谢谢 ``` * [第一章](chapter1/readme.md) * [第一节](chapter1/1.1.md) * [第一节1](chapter1/1.1.1.md) * [第二节](chapter1/1.2.md) * [第二章](chapter2/readme.md) * [第一节](chapter2/2.1.md) * [第二节](chapter2/2.2.md) ``...阅读全文

go语言结构体定义使用

package main import ( "fmt" "sync" ) type Info struct { info map[int]string mu sync.RWMutex } func main() { x := &Info{info: make(map[int]string)} x.Set(1, "golang") s := x.Get(1) fmt.Println(s) } func (s *Info) Get(i int) string { s.mu.RLock() info := s.info[i] s.mu.RUnlock() return info } func (s *Info) Set(i int, name string) bool { s.mu.Lock() ...阅读全文

博文 2015-06-17 23:07:18 fyxichen

go lang学习笔记——接口

go接口非常强大,除了作为一般的接口使用外。它还是go的运行时多态的基础。更能提供超越boost::any的能力。许式伟的《go语言编程》一书中有对接口的机制作较深入的剖析和介绍。 结合书中描述再加上我自己的理解。整理了一下go接口的数据结构和基本操作的描述。 有必要说明的是,以下结构引用的部分书中代码,并且做了极大的精减,只为了能用最简单的方式描述并理解go接口的实现原理。如果我的理解和实现情况相差千里,还望指正。 类型的数据结构 typedef struct _MemberInfo { const char * tag; // 方法原型 void * addr; // 方法地址(函数入口地址) } MemberInfo; typedef struct _TypeInfo { Member...阅读全文

博文 2015-06-17 23:08:10 nobugtodebug