the-way-to-go_ZH_CN
Search…
Introduction
前言
第一部分:学习 Go 语言
第1章:Go 语言的起源,发展与普及
第2章:安装与运行环境
第3章:编辑器、集成开发环境与其它工具
第二部分:语言的核心结构与技术
第4章:基本结构和基本数据类型
第5章:控制结构
第6章:函数(function)
第7章:数组与切片
第8章:Map
第9章:包(package)
第10章:结构(struct)与方法(method)
结构体定义
使用工厂方法创建结构体实例
使用自定义包中的结构体
带标签的结构体
匿名字段和内嵌结构体
方法
类型的 String() 方法和格式化描述符
垃圾回收和 SetFinalizer
第11章:接口(interface)与反射(reflection)
第三部分:Go 高级编程
第12章:读写数据
第13章:错误处理与测试
第14章:协程(goroutine)与通道(channel)
第15章:网络、模版与网页应用
第四部分:实际应用
第16章:常见的陷阱与错误
第17章:模式
第18章:出于性能考虑的实用代码片段
第19章:构建一个完整的应用程序
第20章:Go 语言在 Google App Engine 的使用
第21章:实际部署案例
附录
A 代码引用
B 有趣的 Go 引用
C 代码示例列表
D 书中的包引用
E 书中的工具引用
F 常见问题解答
G 习题答案
H 参考文献
Powered By
GitBook
带标签的结构体
结构体中的字段除了有名字和类型外,还可以有一个可选的标签(tag):它是一个附属于字段的字符串,可以是文档或其他的重要标记。标签的内容不可以在一般的编程中使用,只有包
reflect
能获取它。我们将在下一章(第
11.10 节
)中深入的探讨
reflect
包,它可以在运行时自省类型、属性和方法,比如:在一个变量上调用
reflect.TypeOf()
可以获取变量的正确类型,如果变量是一个结构体类型,就可以通过 Field 来索引结构体的字段,然后就可以使用 Tag 属性。
示例 10.7
struct_tag.go
:
1
package
main
2
3
import
(
4
"fmt"
5
"reflect"
6
)
7
8
type
TagType
struct
{
// tags
9
field1
bool
"An important answer"
10
field2
string
"The name of the thing"
11
field3
int
"How much there are"
12
}
13
14
func
main
()
{
15
tt
:=
TagType
{
true
,
"Barak Obama"
,
1
}
16
for
i
:=
0
;
i
<
3
;
i
++
{
17
refTag
(
tt
,
i
)
18
}
19
}
20
21
func
refTag
(
tt TagType
,
ix
int
)
{
22
ttType
:=
reflect
.
TypeOf
(
tt
)
23
ixField
:=
ttType
.
Field
(
ix
)
24
fmt
.
Printf
(
"%v\n"
,
ixField
.
Tag
)
25
}
Copied!
输出:
1
An important answer
2
The name of the thing
3
How much there are
Copied!
链接
目录
上一节:
使用自定义包中的结构体
下一节:
匿名字段和内嵌结构体
Previous
使用自定义包中的结构体
Next
匿名字段和内嵌结构体
Last modified
3yr ago
Copy link
Contents
链接