@@ -97,7 +97,7 @@ Go对于已声明但未使用的变量会在编译阶段报错,比如下面的
|
||||
|
||||
### 数值类型
|
||||
|
||||
整数类型有无符号和带符号两种。Go同时支持`int`和`uint`,这两种类型的长度相同,但具体长度取决于不同编译器的实现。当前的gcc和gccgo编译器在32位和64位平台上都使用32位来表示`int`和`uint`,但未来在64位平台上可能增加到64位。Go里面也有直接定义好位数的类型:`rune`, `int8`, `int16`, `int32`, `int64`和`byte`, `uint8`, `uint16`, `uint32`, `uint64`。其中`rune`是`int32`的别称,`byte`是`uint8`的别称。
|
||||
整数类型有无符号和带符号两种。Go同时支持`int`和`uint`,这两种类型的长度相同,但具体长度取决于不同编译器的实现。~~当前的gcc和gccgo编译器在32位和64位平台上都使用32位来表示`int`和`uint`,但未来在64位平台上可能增加到64位~~。Go里面也有直接定义好位数的类型:`rune`, `int8`, `int16`, `int32`, `int64`和`byte`, `uint8`, `uint16`, `uint32`, `uint64`。其中`rune`是`int32`的别称,`byte`是`uint8`的别称。
|
||||
|
||||
>需要注意的一点是,这些类型的变量之间不允许互相赋值或操作,不然会在编译时引起编译器报错。
|
||||
>
|
||||
|
||||
@@ -64,7 +64,7 @@ beedb的New函数实际上应该有两个参数,第一个参数标准接口的
|
||||
>注意一点,beedb针对驼峰命名会自动帮你转化成下划线字段,例如你定义了Struct名字为`UserInfo`,那么转化成底层实现的时候是`user_info`,字段命名也遵循该规则。
|
||||
|
||||
## 插入数据
|
||||
下面的代码演示了如何插入一条记录,可以看到我们操作的是strcut对象,而不是原生的sql语句,最后通过调用Save接口将数据保存到数据库。
|
||||
下面的代码演示了如何插入一条记录,可以看到我们操作的是struct对象,而不是原生的sql语句,最后通过调用Save接口将数据保存到数据库。
|
||||
|
||||
var saveone Userinfo
|
||||
saveone.Username = "Test Add User"
|
||||
|
||||
@@ -104,7 +104,7 @@ MongoDB是一个高性能,开源,无模式的文档型数据库,是一个
|
||||
fmt.Println("Phone:", result.Phone)
|
||||
}
|
||||
|
||||
我们可以看出来mgo的操作方式和beedb的操作方式几乎类似,都是基于strcut的操作方式,这个就是Go Style。
|
||||
我们可以看出来mgo的操作方式和beedb的操作方式几乎类似,都是基于struct的操作方式,这个就是Go Style。
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@ XML本质上是一种树形的数据格式,而我们可以定义与之匹配
|
||||
}
|
||||
|
||||
|
||||
上面的例子中,将xml文件解析成对应的strcut对象是通过`xml.Unmarshal`来完成的,这个过程是如何实现的?可以看到我们的struct定义后面多了一些类似于`xml:"serverName"`这样的内容,这个是strcut的一个特性,它们被称为 strcut tag,它们是用来辅助反射的。我们来看一下`Unmarshal`的定义:
|
||||
上面的例子中,将xml文件解析成对应的struct对象是通过`xml.Unmarshal`来完成的,这个过程是如何实现的?可以看到我们的struct定义后面多了一些类似于`xml:"serverName"`这样的内容,这个是struct的一个特性,它们被称为 struct tag,它们是用来辅助反射的。我们来看一下`Unmarshal`的定义:
|
||||
|
||||
func Unmarshal(data []byte, v interface{}) error
|
||||
|
||||
@@ -188,8 +188,8 @@ Go语言的反射机制,可以利用这些tag信息来将来自XML文件中的
|
||||
|
||||
- 如果v是struct,XMLName的tag中定义的名称
|
||||
- 类型为xml.Name的名叫XMLName的字段的值
|
||||
- 通过strcut中字段的tag来获取
|
||||
- 通过strcut的字段名用来获取
|
||||
- 通过struct中字段的tag来获取
|
||||
- 通过struct的字段名用来获取
|
||||
- marshall的类型名称
|
||||
|
||||
我们应如何设置struct 中字段的tag信息以控制最终xml文件的生成呢?
|
||||
|
||||
Reference in New Issue
Block a user