<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>golang on Apache Dubbo</title><link>https://dubbo.apache.org/zh-cn/docs/languages/golang/</link><description>Recent content in golang on Apache Dubbo</description><generator>Hugo</generator><language>zh-cn</language><atom:link href="https://dubbo.apache.org/zh-cn/docs/languages/golang/index.xml" rel="self" type="application/rss+xml"/><item><title>Go 快速开始</title><link>https://dubbo.apache.org/zh-cn/docs/languages/golang/quick-start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/docs/languages/golang/quick-start/</guid><description>&lt;div class="pageinfo pageinfo-primary"&gt;
&lt;p&gt;此文档已经不再维护。您当前查看的是快照版本。如果想要查看最新版本的文档，请参阅&lt;a href="https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/quickstart/"&gt;最新版本&lt;/a&gt;。&lt;/p&gt;

&lt;/div&gt;

&lt;p&gt;推荐&lt;a href="../dubbo-go-3.0/quickstart/quickstart_triple"&gt;使用 IDL&lt;/a&gt; 定义跨语言的服务与编码格式，以下展示的是 Golang 语言版本的服务定义与开发方式，如果你有遗留系统或无多语言开发需求，可参考以下使用方式。&lt;/p&gt;
&lt;h1 id="快速开始"&gt;快速开始&lt;/h1&gt;
&lt;p&gt;通过一个 &lt;code&gt;hellowworld&lt;/code&gt; 例子带领大家快速上手Dubbo-go框架。&lt;/p&gt;
&lt;p&gt;协议：Dubbo &lt;br&gt;
编码：Hessian2&lt;br&gt;
注册中心：Zookeeper&lt;/p&gt;
&lt;h2 id="环境"&gt;环境&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Go编程环境&lt;/li&gt;
&lt;li&gt;启动zookeeper服务，也可以使用远程实例&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="从服务端开始"&gt;从服务端开始&lt;/h2&gt;
&lt;h3 id="第一步编写-provider-结构体和提供服务的方法"&gt;第一步：编写 &lt;code&gt;Provider&lt;/code&gt; 结构体和提供服务的方法&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-server/app/user.go"&gt;https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-server/app/user.go&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;编写需要被编码的结构体，由于使用 &lt;code&gt;Hessian2&lt;/code&gt; 作为编码协议，&lt;code&gt;User&lt;/code&gt; 需要实现 &lt;code&gt;JavaClassName&lt;/code&gt; 方法，它的返回值在dubbo中对应User类的类名。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;type&lt;/span&gt; User &lt;span style="color:#268bd2"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	Id &lt;span style="color:#dc322f"&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	Name &lt;span style="color:#dc322f"&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	Age &lt;span style="color:#dc322f"&gt;int32&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	Time time.Time
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;func&lt;/span&gt; (u User) &lt;span style="color:#268bd2"&gt;JavaClassName&lt;/span&gt;() &lt;span style="color:#dc322f"&gt;string&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#719e07"&gt;return&lt;/span&gt; &lt;span style="color:#2aa198"&gt;&amp;#34;com.ikurento.user.User&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;编写业务逻辑，&lt;code&gt;UserProvider&lt;/code&gt; 相当于dubbo中的一个服务实现。需要实现 &lt;code&gt;Reference&lt;/code&gt; 方法，返回值是这个服务的唯一标识，对应dubbo的 &lt;code&gt;beans&lt;/code&gt; 和 &lt;code&gt;path&lt;/code&gt; 字段。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;type&lt;/span&gt; UserProvider &lt;span style="color:#268bd2"&gt;struct&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;func&lt;/span&gt; (u &lt;span style="color:#719e07"&gt;*&lt;/span&gt;UserProvider) &lt;span style="color:#268bd2"&gt;GetUser&lt;/span&gt;(ctx context.Context, req []&lt;span style="color:#268bd2"&gt;interface&lt;/span&gt;{}) (&lt;span style="color:#719e07"&gt;*&lt;/span&gt;User, &lt;span style="color:#dc322f"&gt;error&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#b58900"&gt;println&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;req:%#v&amp;#34;&lt;/span&gt;, req)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	rsp &lt;span style="color:#719e07"&gt;:=&lt;/span&gt; User{&lt;span style="color:#2aa198"&gt;&amp;#34;A001&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;&amp;#34;hellowworld&amp;#34;&lt;/span&gt;, &lt;span style="color:#2aa198"&gt;18&lt;/span&gt;, time.&lt;span style="color:#268bd2"&gt;Now&lt;/span&gt;()}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#b58900"&gt;println&lt;/span&gt;(&lt;span style="color:#2aa198"&gt;&amp;#34;rsp:%#v&amp;#34;&lt;/span&gt;, rsp)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#719e07"&gt;return&lt;/span&gt; &lt;span style="color:#719e07"&gt;&amp;amp;&lt;/span&gt;rsp, &lt;span style="color:#cb4b16"&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;func&lt;/span&gt; (u &lt;span style="color:#719e07"&gt;*&lt;/span&gt;UserProvider) &lt;span style="color:#268bd2"&gt;Reference&lt;/span&gt;() &lt;span style="color:#dc322f"&gt;string&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#719e07"&gt;return&lt;/span&gt; &lt;span style="color:#2aa198"&gt;&amp;#34;UserProvider&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;注册服务和对象&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;func&lt;/span&gt; &lt;span style="color:#268bd2"&gt;init&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	config.&lt;span style="color:#268bd2"&gt;SetProviderService&lt;/span&gt;(&lt;span style="color:#b58900"&gt;new&lt;/span&gt;(UserProvider))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#586e75"&gt;// ------for hessian2------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	hessian.&lt;span style="color:#268bd2"&gt;RegisterPOJO&lt;/span&gt;(&lt;span style="color:#719e07"&gt;&amp;amp;&lt;/span&gt;User{})
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="第二步编写主程序"&gt;第二步：编写主程序&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-server/app/server.go"&gt;https://github.com/dubbogo/dubbo-samples/blob/master/golang/helloworld/dubbo/go-server/app/server.go&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Go 语言定义服务</title><link>https://dubbo.apache.org/zh-cn/docs/languages/golang/go-specific/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/docs/languages/golang/go-specific/</guid><description>&lt;div class="pageinfo pageinfo-primary"&gt;
&lt;p&gt;此文档已经不再维护。您当前查看的是快照版本。如果想要查看最新版本的文档，请参阅&lt;a href="https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/quickstart/"&gt;最新版本&lt;/a&gt;。&lt;/p&gt;

&lt;/div&gt;</description></item></channel></rss>