mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 12:32:21 +00:00
fixed typos
This commit is contained in:
parent
b9e1ec32a3
commit
6487ac2c2e
@ -168,7 +168,7 @@ func init() {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
因为Go语言的包只能静态导入,我们无法向已经安装的protoc-gen-go添加我们新编写的插件。我们将重新克隆protoc-gen-go对应main函数:
|
因为Go语言的包只能静态导入,我们无法向已经安装的protoc-gen-go添加我们新编写的插件。我们将重新克隆protoc-gen-go对应的main函数:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
package main
|
package main
|
||||||
@ -279,7 +279,7 @@ func (p *netrpcPlugin) buildServiceSpec(svc *descriptor.ServiceDescriptorProto)
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
其中输入参数是`*descriptor.ServiceDescriptorProto`类型,完整描述了一个服务的所有信息。然后通过`svc.GetName()`就可以获取Protobuf文件中定义的服务的名字。Protobuf文件中的名字转为Go语言对名字后,需要通过`generator.CamelCase`函数进行一次转换。类似的,在for循环中我们通过`m.GetName()`获取方法的名字,然后再转为Go语言中对应的名字。比较复杂的是对输入和输出参数名字的解析:首先需要通过`m.GetInputType()`获取输入参数的类型,然后通过`p.ObjectNamed`获取类型对应的类对象信息,最后获取类对象的名字。
|
其中输入参数是`*descriptor.ServiceDescriptorProto`类型,完整描述了一个服务的所有信息。然后通过`svc.GetName()`就可以获取Protobuf文件中定义的服务的名字。Protobuf文件中的名字转为Go语言的名字后,需要通过`generator.CamelCase`函数进行一次转换。类似的,在for循环中我们通过`m.GetName()`获取方法的名字,然后再转为Go语言中对应的名字。比较复杂的是对输入和输出参数名字的解析:首先需要通过`m.GetInputType()`获取输入参数的类型,然后通过`p.ObjectNamed`获取类型对应的类对象信息,最后获取类对象的名字。
|
||||||
|
|
||||||
然后我们就可以基于buildServiceSpec方法构造的服务的元信息生成服务的代码:
|
然后我们就可以基于buildServiceSpec方法构造的服务的元信息生成服务的代码:
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user