{"id":283,"date":"2024-09-15T19:37:07","date_gmt":"2024-09-15T12:37:07","guid":{"rendered":"https:\/\/gotutorial.org\/?page_id=283"},"modified":"2024-09-15T19:41:23","modified_gmt":"2024-09-15T12:41:23","slug":"go-interface","status":"publish","type":"page","link":"https:\/\/www.gotutorial.org\/go-tutorial\/go-interface\/","title":{"rendered":"Go Interface"},"content":{"rendered":"\n<p><strong>Summary<\/strong>: in this tutorial, you will learn how to use the Go interface to write functions that accept different types that implement the same interface.<\/p>\n\n\n\n<p>In Go, an interface is a type that specifies a set of <a href=\"https:\/\/gotutorial.org\/go-tutorial\/go-methods\/\">method<\/a> signatures. This means that the methods you specify in the interfaces do not have implementations.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Defining an interface<\/h2>\n\n\n\n<p>Here&#8217;s the syntax for defining an interface in Go:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"Go\" data-shcb-language-slug=\"go\"><span><code class=\"hljs language-go\"><span class=\"hljs-keyword\">type<\/span> InterfaceName <span class=\"hljs-keyword\">interface<\/span> {\n   method1(parameters) returnType1\n   method2(parameters) returnType2\n   ...\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Go<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">go<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In this syntax:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>First, specify the type, interface name, and the <code>interface<\/code> keyword.<\/li>\n\n\n\n<li>Second, list one or more methods within the curly braces.<\/li>\n<\/ul>\n\n\n\n<p>For example, the following defines an interface named <code>Shape<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"Go\" data-shcb-language-slug=\"go\"><span><code class=\"hljs language-go\"><span class=\"hljs-keyword\">type<\/span> Shape <span class=\"hljs-keyword\">interface<\/span> {\n    Area() <span class=\"hljs-keyword\">float64<\/span>\n    Perimeter() <span class=\"hljs-keyword\">float64<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Go<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">go<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The <code>Shape<\/code> interface has two methods <code>Area()<\/code> and <code>Perimeter()<\/code> that accepts no parameters and returns a <code>float64<\/code> value.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Implementing an interface<\/h2>\n\n\n\n<p>To implement an interface, you provide the type with implementations of the methods defined in the interface. <\/p>\n\n\n\n<p>For example, the following defines the <code>Rectangle<\/code> struct type that implements the <code>Shape<\/code> interface:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"Go\" data-shcb-language-slug=\"go\"><span><code class=\"hljs language-go\"><span class=\"hljs-keyword\">type<\/span> Rectangle <span class=\"hljs-keyword\">struct<\/span> {\n    Width, Length <span class=\"hljs-keyword\">float64<\/span>\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-params\">(r Rectangle)<\/span> <span class=\"hljs-title\">Area<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-title\">float64<\/span><\/span> {\n    <span class=\"hljs-keyword\">return<\/span> r.Width * r.Length\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-params\">(r Rectangle)<\/span> <span class=\"hljs-title\">Perimeter<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-title\">float64<\/span><\/span> {\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">2<\/span> * (r.Width + r.Length)\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Go<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">go<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Since the <code>Rectangle<\/code> struct implements the <code>Shape<\/code> interface, you can use it anywhere that accepts the <code>Shape<\/code> interface type. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Using the interface<\/h2>\n\n\n\n<p>The following defines a <a href=\"https:\/\/gotutorial.org\/go-tutorial\/go-functions\/\">function<\/a> that accepts a slice of <code>Shape<\/code> interfaces:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"Go\" data-shcb-language-slug=\"go\"><span><code class=\"hljs language-go\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-title\">calculateTotalArea<\/span><span class=\"hljs-params\">(shapes &#91;]Shape)<\/span> <span class=\"hljs-title\">float64<\/span><\/span> {\n    <span class=\"hljs-keyword\">var<\/span> totalArea <span class=\"hljs-keyword\">float64<\/span>\n    <span class=\"hljs-keyword\">for<\/span> _, s := <span class=\"hljs-keyword\">range<\/span> shapes {\n        totalArea += s.Area()\n    }\n    <span class=\"hljs-keyword\">return<\/span> totalArea\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Go<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">go<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Since the <code>Rectangle<\/code> implements the <code>Shape<\/code> interface, you can pass it to the <code>calculateTotalArea<\/code> function:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"Go\" data-shcb-language-slug=\"go\"><span><code class=\"hljs language-go\"><span class=\"hljs-keyword\">package<\/span> main\n\n<span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-string\">\"fmt\"<\/span>\n\n<span class=\"hljs-keyword\">type<\/span> Shape <span class=\"hljs-keyword\">interface<\/span> {\n    Area() <span class=\"hljs-keyword\">float64<\/span>\n    Perimeter() <span class=\"hljs-keyword\">float64<\/span>\n}\n\n<span class=\"hljs-keyword\">type<\/span> Rectangle <span class=\"hljs-keyword\">struct<\/span> {\n    Width, Length <span class=\"hljs-keyword\">float64<\/span>\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-params\">(r Rectangle)<\/span> <span class=\"hljs-title\">Area<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-title\">float64<\/span><\/span> {\n    <span class=\"hljs-keyword\">return<\/span> r.Width * r.Length\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-params\">(r Rectangle)<\/span> <span class=\"hljs-title\">Perimeter<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-title\">float64<\/span><\/span> {\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">2<\/span> * (r.Width + r.Length)\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-title\">calculateTotalArea<\/span><span class=\"hljs-params\">(shapes &#91;]Shape)<\/span> <span class=\"hljs-title\">float64<\/span><\/span> {\n    <span class=\"hljs-keyword\">var<\/span> totalArea <span class=\"hljs-keyword\">float64<\/span>\n    <span class=\"hljs-keyword\">for<\/span> _, s := <span class=\"hljs-keyword\">range<\/span> shapes {\n        totalArea += s.Area()\n    }\n    <span class=\"hljs-keyword\">return<\/span> totalArea\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span><\/span> {\n    shapes := &#91;]Shape{\n        Rectangle{Width: <span class=\"hljs-number\">5<\/span>, Length: <span class=\"hljs-number\">10<\/span>},\n        Rectangle{Width: <span class=\"hljs-number\">3<\/span>, Length: <span class=\"hljs-number\">5<\/span>},\n    }\n\n    fmt.Printf(<span class=\"hljs-string\">\"Total area: %.2f\\n\"<\/span>, calculateTotalArea(shapes))\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Go<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">go<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"Go\" data-shcb-language-slug=\"go\"><span><code class=\"hljs language-go\">Total area: <span class=\"hljs-number\">65.00<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Go<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">go<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Adding more types that implement the same interface<\/h2>\n\n\n\n<p>The following defines the <code>Circle<\/code> struct type that implements the <code>Shape<\/code> interface:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"Go\" data-shcb-language-slug=\"go\"><span><code class=\"hljs language-go\"><span class=\"hljs-keyword\">type<\/span> Circle <span class=\"hljs-keyword\">struct<\/span> {\n    Radius <span class=\"hljs-keyword\">float64<\/span>\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-params\">(c Circle)<\/span> <span class=\"hljs-title\">Area<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-title\">float64<\/span><\/span> {\n    <span class=\"hljs-keyword\">return<\/span> math.Pi * c.Radius * c.Radius\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-params\">(c Circle)<\/span> <span class=\"hljs-title\">Perimeter<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-title\">float64<\/span><\/span> {\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">2<\/span> * math.Pi * c.Radius\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Go<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">go<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Since <code>Circle<\/code> implements the <code>Shape<\/code> interface, it is a <code>Shape<\/code>. We can also use the <code>Circle<\/code> as a <code>Shape<\/code>. For example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"Go\" data-shcb-language-slug=\"go\"><span><code class=\"hljs language-go\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span><\/span> {\n    shapes := &#91;]Shape{\n        Rectangle{Width: <span class=\"hljs-number\">5<\/span>, Length: <span class=\"hljs-number\">10<\/span>},\n        Rectangle{Width: <span class=\"hljs-number\">3<\/span>, Length: <span class=\"hljs-number\">5<\/span>},\n        Circle{Radius: <span class=\"hljs-number\">10<\/span>},\n    }\n\n    fmt.Printf(<span class=\"hljs-string\">\"Total area: %.2f\\n\"<\/span>, calculateTotalArea(shapes))\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Go<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">go<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"Go\" data-shcb-language-slug=\"go\"><span><code class=\"hljs language-go\">Total area: <span class=\"hljs-number\">379.16<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Go<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">go<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Here&#8217;s the complete program:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"Go\" data-shcb-language-slug=\"go\"><span><code class=\"hljs language-go\"><span class=\"hljs-keyword\">package<\/span> main\n\n<span class=\"hljs-keyword\">import<\/span> (\n    <span class=\"hljs-string\">\"fmt\"<\/span>\n    <span class=\"hljs-string\">\"math\"<\/span>\n)\n\n<span class=\"hljs-keyword\">type<\/span> Shape <span class=\"hljs-keyword\">interface<\/span> {\n    Area() <span class=\"hljs-keyword\">float64<\/span>\n    Perimeter() <span class=\"hljs-keyword\">float64<\/span>\n}\n\n<span class=\"hljs-keyword\">type<\/span> Rectangle <span class=\"hljs-keyword\">struct<\/span> {\n    Width, Length <span class=\"hljs-keyword\">float64<\/span>\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-params\">(r Rectangle)<\/span> <span class=\"hljs-title\">Area<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-title\">float64<\/span><\/span> {\n    <span class=\"hljs-keyword\">return<\/span> r.Width * r.Length\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-params\">(r Rectangle)<\/span> <span class=\"hljs-title\">Perimeter<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-title\">float64<\/span><\/span> {\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">2<\/span> * (r.Width + r.Length)\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-title\">calculateTotalArea<\/span><span class=\"hljs-params\">(shapes &#91;]Shape)<\/span> <span class=\"hljs-title\">float64<\/span><\/span> {\n    <span class=\"hljs-keyword\">var<\/span> totalArea <span class=\"hljs-keyword\">float64<\/span>\n    <span class=\"hljs-keyword\">for<\/span> _, s := <span class=\"hljs-keyword\">range<\/span> shapes {\n        totalArea += s.Area()\n    }\n    <span class=\"hljs-keyword\">return<\/span> totalArea\n}\n\n<span class=\"hljs-keyword\">type<\/span> Circle <span class=\"hljs-keyword\">struct<\/span> {\n    Radius <span class=\"hljs-keyword\">float64<\/span>\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-params\">(c Circle)<\/span> <span class=\"hljs-title\">Area<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-title\">float64<\/span><\/span> {\n    <span class=\"hljs-keyword\">return<\/span> math.Pi * c.Radius * c.Radius\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-params\">(c Circle)<\/span> <span class=\"hljs-title\">Perimeter<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-title\">float64<\/span><\/span> {\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">2<\/span> * math.Pi * c.Radius\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">func<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span><\/span> {\n    shapes := &#91;]Shape{\n        Rectangle{Width: <span class=\"hljs-number\">5<\/span>, Length: <span class=\"hljs-number\">10<\/span>},\n        Rectangle{Width: <span class=\"hljs-number\">3<\/span>, Length: <span class=\"hljs-number\">5<\/span>},\n        Circle{Radius: <span class=\"hljs-number\">10<\/span>},\n    }\n    fmt.Printf(<span class=\"hljs-string\">\"Total area: %.2f\\n\"<\/span>, calculateTotalArea(shapes))\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Go<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">go<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Interfaces allow you to write functions that accept different types as long as they implement the same interface.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An interface is a type that includes a set of method signatures.<\/li>\n\n\n\n<li>To implement an interface, define methods specified in the interface for the type.<\/li>\n\n\n\n<li>An interface allows you to write code that accepts different types as long as they have the same interface.<\/li>\n<\/ul>\n<div class=\"helpful-block-content\" data-title=\"\">\n\t<div class=\"wth-question\">Was this tutorial helpful?<\/div>\n\t<div class=\"wth-thumbs\">\n\t\t<button\n\t\t\tdata-post=\"283\"\n\t\t\tdata-post-url=\"https:\/\/www.gotutorial.org\/go-tutorial\/go-interface\/\"\n\t\t\tdata-post-title=\"Go Interface\"\n\t\t\tdata-response=\"1\"\n\t\t\tclass=\"wth-btn-rounded wth-yes-btn\"\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstroke-width=\"2\"\n\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\tclass=\"feather feather-thumbs-up block w-full h-full\"\n\t\t\t>\n\t\t\t\t<path\n\t\t\t\t\td=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"\n\t\t\t\t><\/path>\n\t\t\t<\/svg>\n\t\t\t<span class=\"sr-only\"> Yes <\/span>\n\t\t<\/button>\n\n\t\t<button\n\t\t\tdata-response=\"0\"\n\t\t\tdata-post=\"283\"\n\t\t\tdata-post-url=\"https:\/\/www.gotutorial.org\/go-tutorial\/go-interface\/\"\n\t\t\tdata-post-title=\"Go Interface\"\n\t\t\tclass=\"wth-btn-rounded wth-no-btn\"\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstroke-width=\"2\"\n\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t>\n\t\t\t\t<path\n\t\t\t\t\td=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"\n\t\t\t\t><\/path>\n\t\t\t<\/svg>\n\t\t\t<span class=\"sr-only\"> No <\/span>\n\t\t<\/button>\n\t<\/div>\n\n\t<div class=\"wth-form hidden\">\n\t\t<div class=\"wth-form-wrapper\">\n\t\t\t<div class=\"wth-title\"><\/div>\n\t\t\t<textarea class=\"wth-message\"><\/textarea>\n\t\t\t<input type=\"button\" name=\"wth-submit\" class=\"wth-btn wth-btn-submit\" id=\"wth-submit\" \/>\n\t\t\t<input type=\"button\" class=\"wth-btn wth-btn-cancel\" value=\"Cancel\" \/>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summary: in this tutorial, you will learn how to use the Go interface to write functions that accept different types that implement the same interface. In Go, an interface is a type that specifies a set of method signatures. This means that the methods you specify in the interfaces do not have implementations. Defining an [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":10,"menu_order":24,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-283","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/pages\/283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/comments?post=283"}],"version-history":[{"count":2,"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/pages\/283\/revisions"}],"predecessor-version":[{"id":285,"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/pages\/283\/revisions\/285"}],"up":[{"embeddable":true,"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/pages\/10"}],"wp:attachment":[{"href":"https:\/\/www.gotutorial.org\/wp-json\/wp\/v2\/media?parent=283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}