go语言+解析xml go语言源码解析( 三 )


}
fmt.Printf("\nField: User.%s\n", fieldName)
fmt.Printf("\tWhole tag value : %q\n", field.Tag)
fmt.Printf("\tValue of 'mytag': %q\n", field.Tag.Get("mytag"))
}
输出(在Go Playground上尝试):
Field: User.Name
Whole tag value : "mytag:\"MyName\""
Value of 'mytag': "MyName"Field: User.Email
Whole tag value : "mytag:\"MyEmail\""
Value of 'mytag': "MyEmail"
GopherCon 2015上有一个关于struct标签的演示,名为:结构标签的许多面孔(幻灯片)
(和视频)以下是常用标签键的列表:
json-由encoding/json包装使用,详细说明json.Marshal()
xml-由encoding/xml包装使用,详细说明xml.Marshal()
bson-由gobson使用,详细说明bson.Marshal()
protobuf-由github.com/golang/protobuf/proto,在软件包doc中有详细说明
yaml-由gopkg.in/yaml.v2包装使用,详细说明yaml.Marshal()
db-由github.com/jmoiron/sqlx包装使用;也被github.com/go-gorp/gorp包装使用
orm-由github.com/astaxie/beego/orm包装使用,在“ 型号– Beego ORM”中有详细说明
gorm-由github.com/jinzhu/gorm软件包使用,示例可在其文档中找到:模型
valid-由github.com/asaskevich/govalidator软件包使用,示例可以在项目页面中找到
datastore-由appengine/datastore(Google App Engine平台,数据存储区服务)使用,在“ 属性”中有详细说明
schema-用于通过HTML表单值github.com/gorilla/schema填充(struct包文档中有详细说明)
asn-由encoding/asn1包装使用,详细说明在asn1.Marshal()和asn1.Unmarshal()
csv-由github.com/gocarina/gocsv包装使用
GO语言(十一):开始使用多模块工作区本教程介绍 Go 中多模块工作区的基础知识 。使用多模块工作区,您可以告诉 Go 命令您正在同时在多个模块中编写代码,并轻松地在这些模块中构建和运行代码 。
在本教程中 , 您将在共享的多模块工作区中创建两个模块,对这些模块进行更改,并在构建中查看这些更改的结果 。
本教程需要 go1.18 或更高版本 。使用go.dev/dl中的链接确保您已在 Go 1.18 或更高版本中安装了 Go。
首先,为您要编写的代码创建一个模块 。
1、打开命令提示符并切换到您的主目录 。
在 Linux 或 Mac 上:
在 Windows 上:
2、在命令提示符下 , 为您的代码创建一个名为工作区的目录 。
3、初始化模块
我们的示例将创建一个hello依赖于 golang.org/x/example 模块的新模块 。
创建你好模块:
使用 . 添加对 golang.org/x/example 模块的依赖项go get 。
在 hello 目录下创建 hello.go , 内容如下:
现在,运行 hello 程序:
在这一步中,我们将创建一个go.work文件来指定模块的工作区 。
在workspace目录中,运行:
该go work init命令告诉为包含目录中模块的工作空间go创建一个文件。go.work./hello
该go命令生成一个go.work如下所示的文件:
该go.work文件的语法与go.mod相同 。
该go指令告诉 Go 应该使用哪个版本的 Go 来解释文件 。它类似于文件中的go指令go.mod。
该use指令告诉 Go在进行构建时hello目录中的模块应该是主模块 。
所以在模块的任何子目录中workspace都会被激活 。
2、运行工作区目录下的程序
在workspace目录中,运行:
Go 命令包括工作区中的所有模块作为主模块 。这允许我们在模块中引用一个包,即使在模块之外 。在模块或工作区之外运行go run命令会导致错误,因为该go命令不知道要使用哪些模块 。
接下来,我们将golang.org/x/example模块的本地副本添加到工作区 。然后,我们将向stringutil包中添加一个新函数,我们可以使用它来代替Reverse.

推荐阅读