{"id":21825,"date":"2022-11-16T03:13:04","date_gmt":"2022-11-15T21:43:04","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/"},"modified":"2022-11-16T03:13:04","modified_gmt":"2022-11-15T21:43:04","slug":"solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/","title":{"rendered":"[Solved] Is it better to use pointer for non-primitive types in struct fields in Go"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-49833734\" class=\"answer js-answer downvoted-answer accepted-answer js-accepted-answer\" data-answerid=\"49833734\" data-parentid=\"49833524\" data-score=\"-4\" data-position-on-page=\"2\" data-highest-scored=\"0\" data-question-has-accepted-highest-score=\"0\" itemprop=\"suggestedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>I&#8217;m not really a professional or know the ins and outs of Go, so take everything I say with some grain of salt.<\/p>\n<p>But as I am understanding it, you should most likely use pointers.<\/p>\n<p>This is because every time you use a non-pointer type, the whole struct will be part of your struct in memory. As a consequence, you can&#8217;t share a single instance of a struct between multiple structs &#8211; every single one gets a copy of your original struct.<\/p>\n<p>Heres a small example:<\/p>\n<pre><code>\/\/ This struct has 2x64 bits in size\ntype MyStruct struct {\n    A uint64\n    B uint64\n}\n\n\/\/ This struct has 32 + 2x64 bits in size\ntype MyOtherStruct struct {\n    C uint32\n    Parent MyStruct\n}\n\n\/\/ This struct has 32 + the length of an address bits size \ntype MyPointerStruct struct {\n    D uint32\n    Parent *MyStruct\n}\n<\/code><\/pre>\n<p>But apart from memory concerns, there is also a performance hit if your inner struct is very big. Because every time you set the inner struct the whole memory has to be copied to your instance.<\/p>\n<p><strong>However<\/strong> you have to be careful if your are dealing with <em>interfaces<\/em> or <em>structs<\/em>. At runtime, an <em>interface<\/em> is represented as a type with two fields: A reference to the actual (runtime) <em>type<\/em> and one with a <em>reference<\/em> to the actual instance.<\/p>\n<p>So I &#8211; with my unprofessional opinion &#8211; would recommend to <strong>not<\/strong> use pointers if you have interface types because otherwise the CPU has to deference twice (once to get the interface reference, and then again to get the instance of the interface).<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">2<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Is it better to use pointer for non-primitive types in struct fields in Go <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] I&#8217;m not really a professional or know the ins and outs of Go, so take everything I say with some grain of salt. But as I am understanding it, you should most likely use pointers. This is because every time you use a non-pointer type, the whole struct will be part of your struct &#8230; <a title=\"[Solved] Is it better to use pointer for non-primitive types in struct fields in Go\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/\" aria-label=\"More on [Solved] Is it better to use pointer for non-primitive types in struct fields in Go\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[596],"class_list":["post-21825","post","type-post","status-publish","format-standard","hentry","category-solved","tag-go"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Is it better to use pointer for non-primitive types in struct fields in Go - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Is it better to use pointer for non-primitive types in struct fields in Go - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] I&#8217;m not really a professional or know the ins and outs of Go, so take everything I say with some grain of salt. But as I am understanding it, you should most likely use pointers. This is because every time you use a non-pointer type, the whole struct will be part of your struct ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-15T21:43:04+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Is it better to use pointer for non-primitive types in struct fields in Go\",\"datePublished\":\"2022-11-15T21:43:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/\"},\"wordCount\":241,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"go\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/\",\"name\":\"[Solved] Is it better to use pointer for non-primitive types in struct fields in Go - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-11-15T21:43:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Is it better to use pointer for non-primitive types in struct fields in Go\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Is it better to use pointer for non-primitive types in struct fields in Go - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Is it better to use pointer for non-primitive types in struct fields in Go - JassWeb","og_description":"[ad_1] I&#8217;m not really a professional or know the ins and outs of Go, so take everything I say with some grain of salt. But as I am understanding it, you should most likely use pointers. This is because every time you use a non-pointer type, the whole struct will be part of your struct ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/","og_site_name":"JassWeb","article_published_time":"2022-11-15T21:43:04+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Is it better to use pointer for non-primitive types in struct fields in Go","datePublished":"2022-11-15T21:43:04+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/"},"wordCount":241,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["go"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/","url":"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/","name":"[Solved] Is it better to use pointer for non-primitive types in struct fields in Go - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-11-15T21:43:04+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-is-it-better-to-use-pointer-for-non-primitive-types-in-struct-fields-in-go\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Is it better to use pointer for non-primitive types in struct fields in Go"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/21825","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=21825"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/21825\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=21825"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=21825"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=21825"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}