{"id":5434,"date":"2024-08-27T13:24:11","date_gmt":"2024-08-27T12:24:11","guid":{"rendered":"https:\/\/gdksoftware.com\/knowledgebase\/const-or-not-compiler-optimization-in-coding"},"modified":"2024-08-27T14:54:43","modified_gmt":"2024-08-27T13:54:43","slug":"const-ou-nao-otimizacao-do-compilador-na-codificacao","status":"publish","type":"knowledge","link":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/const-ou-nao-otimizacao-do-compilador-na-codificacao","title":{"rendered":"Const ou n\u00e3o? Otimiza\u00e7\u00e3o do compilador na codifica\u00e7\u00e3o"},"content":{"rendered":"<p><span data-slate-node=\"text\">O <\/span><span data-slate-node=\"text\"><span spellcheck=\"false\" data-slate-leaf=\"true\"><code class=\"\" data-line=\"\">const<\/code><\/span><\/span><span data-slate-node=\"text\" data-slate-fragment=\"JTVCJTdCJTIydHlwZSUyMiUzQSUyMnAlMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMm9yZGVyZWRNYXJrcyUyMiUzQSU1QiUyMmNvbG9yJTIyJTVEJTJDJTIydGV4dCUyMiUzQSUyMklzJTIwJTIyJTdEJTJDJTdCJTIyb3JkZXJlZE1hcmtzJTIyJTNBJTVCJTIyY29sb3IlMjIlNUQlMkMlMjJjb2RlJTIyJTNBdHJ1ZSUyQyUyMnRleHQlMjIlM0ElMjJjb25zdCUyMiU3RCUyQyU3QiUyMm9yZGVyZWRNYXJrcyUyMiUzQSU1QiUyMmNvbG9yJTIyJTVEJTJDJTIydGV4dCUyMiUzQSUyMiUyMGZvciUyMiU3RCU1RCU3RCU1RA==\"> \u00e9 \u00fatil para um par\u00e2metro ou somente para nerds e cr\u00edticos?<\/span><\/p>\n<p><span spellcheck=\"false\" data-slate-leaf=\"true\">Deveria ser<\/span><span spellcheck=\"false\" data-slate-leaf=\"true\">:<\/span><span data-slate-node=\"text\"><span spellcheck=\"false\" data-slate-leaf=\"true\"><code class=\"\" data-line=\"\"> procedure Check(const Text: string);<\/code><\/span><\/span><span spellcheck=\"false\" data-slate-leaf=\"true\">? Ou \u00e9<\/span><span data-slate-node=\"text\">\u00a0<\/span><span data-slate-node=\"text\" data-slate-fragment=\"JTVCJTdCJTIydHlwZSUyMiUzQSUyMnAlMjIlMkMlMjJjaGlsZHJlbiUyMiUzQSU1QiU3QiUyMm9yZGVyZWRNYXJrcyUyMiUzQSU1QiUyMmNvbG9yJTIyJTVEJTJDJTIyY29kZSUyMiUzQXRydWUlMkMlMjJ0ZXh0JTIyJTNBJTIycHJvY2VkdXJlJTIwQ2hlY2soY29uc3QlMjBUZXh0JTNBJTIwc3RyaW5nKSUzQiUyMiU3RCUyQyU3QiUyMm9yZGVyZWRNYXJrcyUyMiUzQSU1QiUyMmNvbG9yJTIyJTVEJTJDJTIydGV4dCUyMiUzQSUyMiUzRiUyME9yJTIwaXMlMjAlMjIlN0QlMkMlN0IlMjJvcmRlcmVkTWFya3MlMjIlM0ElNUIlMjJjb2xvciUyMiU1RCUyQyUyMmNvZGUlMjIlM0F0cnVlJTJDJTIydGV4dCUyMiUzQSUyMnByb2NlZHVyZSUyMENoZWNrKFRleHQlM0ElMjBzdHJpbmcpJTNCJTIyJTdEJTVEJTdEJTVE\"><span spellcheck=\"false\" data-slate-leaf=\"true\"><code class=\"\" data-line=\"\">procedure Check(Text: string);<\/code><\/span><\/span> basicamente o mesmo?<\/p>\n<p>Talvez voc\u00ea nunca tenha se perguntado como o compilador lida com seu c\u00f3digo. E que efeitos isso tem em seu aplicativo. Mas se voc\u00ea souber um pouco sobre como isso funciona em segundo plano, \u00e9 muito inteligente levar isso a s\u00e9rio. Isso \u00e9 realmente importante para o desempenho e o tamanho do seu aplicativo.<\/p>\n<p>Um par\u00e2metro constante permite que o compilador associe o valor diretamente \u00e0 vari\u00e1vel, sem precisar reavali\u00e1-la. Isso \u00e9 chamado de <em>constant propagation<\/em>. Isso \u00e9 (geralmente) combinado com uma t\u00e9cnica chamada <em>constante folding <\/em>. Em termos muito simples, o compilador garante que as vari\u00e1veis sejam substitu\u00eddas (durante a compila\u00e7\u00e3o) por express\u00f5es constantes, de modo que n\u00e3o precisem mais ser avaliadas em tempo de execu\u00e7\u00e3o. Isso significa que o compilador j\u00e1 pode simplificar seu c\u00f3digo e reduzir a quantidade de avalia\u00e7\u00f5es em tempo de execu\u00e7\u00e3o. E, como resultado, ele simplesmente se torna mais r\u00e1pido.<\/p>\n<p>H\u00e1 uma exce\u00e7\u00e3o, que s\u00e3o os par\u00e2metros que j\u00e1 funcionam por refer\u00eancia, como \u00e9 o caso dos objetos. Isso j\u00e1 est\u00e1 otimizado. Uma pequena exce\u00e7\u00e3o a isso \u00e9 quando voc\u00ea trabalha com interfaces. Ainda h\u00e1 uma pequena diferen\u00e7a se voc\u00ea trabalha com ou sem const.<\/p>\n<p>Depois de saber disso, voc\u00ea tamb\u00e9m poder\u00e1 agir intencionalmente com isso. E se o fizer, n\u00e3o pense apenas em adicionar uma constante, mas pense tamb\u00e9m (por exemplo) no c\u00f3digo em um loop que usa vari\u00e1veis. O que acontece se voc\u00ea converter o conte\u00fado de um loop em um procedimento ou fun\u00e7\u00e3o com par\u00e2metros constantes? Como voc\u00ea pode imaginar, isso tem efeitos positivos no desempenho. E esse \u00e9 apenas um exemplo.<\/p>\n<p>Pessoalmente, eu sabia que const era uma otimiza\u00e7\u00e3o do compilador, mas n\u00e3o sabia exatamente como funcionava. O gatilho para dar uma olhada mais de perto nisso veio de outro exemplo. Encontrei esse exemplo no f\u00f3rum do MVP. \u00c9 um \u00f3timo exemplo que mostra que, em geral, voc\u00ea n\u00e3o est\u00e1 ciente do efeito no compilador. Voc\u00ea tamb\u00e9m pode tirar proveito disso, pois n\u00e3o se trata de uma constru\u00e7\u00e3o incomum.<\/p>\n<p>O exemplo \u00e9 o seguinte:<\/p>\n<div style=\"background: #ffffff; overflow: auto; width: auto; border: solid gray; border-width: .1em .1em .1em .8em; padding: .2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%;\"><span style=\"color: #008800; font-weight: bold;\">function<\/span> <span style=\"color: #0066bb; font-weight: bold;\">GetUserCollection<\/span><span style=\"color: #333333;\">:<\/span> TUserCollection<span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">begin<\/span>   \r\n  <span style=\"color: #008800; font-weight: bold;\">if<\/span> FUserCollection <span style=\"color: #333333;\">=<\/span> <span style=\"color: #008800; font-weight: bold;\">nil<\/span> <span style=\"color: #008800; font-weight: bold;\">then<\/span>\r\n    FUserCollection <span style=\"color: #333333;\">:=<\/span> TUserCollection<span style=\"color: #333333;\">.<\/span>Create<span style=\"color: #333333;\">;<\/span>   \r\n\r\n  <span style=\"color: #007020;\">Result<\/span> <span style=\"color: #333333;\">:=<\/span> FUserCollection<span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span> \r\n<\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p>Esse c\u00f3digo pode ser aprimorado para o compilador movendo o Create para outro m\u00e9todo, como este:<\/p>\n<div style=\"background: #ffffff; overflow: auto; width: auto; border: solid gray; border-width: .1em .1em .1em .8em; padding: .2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%;\"><span style=\"color: #008800; font-weight: bold;\">function<\/span> <span style=\"color: #0066bb; font-weight: bold;\">GetUserCollection<\/span><span style=\"color: #333333;\">:<\/span> TUserCollection<span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">begin<\/span>   \r\n  <span style=\"color: #008800; font-weight: bold;\">if<\/span> FUserCollection <span style=\"color: #333333;\">=<\/span> <span style=\"color: #008800; font-weight: bold;\">nil<\/span> <span style=\"color: #008800; font-weight: bold;\">then<\/span>\r\n    InitUserCollection<span style=\"color: #333333;\">;<\/span>   \r\n\r\n  <span style=\"color: #007020;\">Result<\/span> <span style=\"color: #333333;\">:=<\/span> FUserCollection<span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span> \r\n\r\n<span style=\"color: #008800; font-weight: bold;\">procedure<\/span> <span style=\"color: #0066bb; font-weight: bold;\">InitUserCollection<\/span><span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">begin<\/span>\r\n  FUserCollection <span style=\"color: #333333;\">:=<\/span> TUserCollection<span style=\"color: #333333;\">.<\/span>Create<span style=\"color: #333333;\">;<\/span>\r\n<span style=\"color: #008800; font-weight: bold;\">end<\/span><span style=\"color: #333333;\">;<\/span>\r\n<\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n<p>Na primeira situa\u00e7\u00e3o, o compilador leva em conta que, em cada chamada para GetUserCollection, \u00e9 poss\u00edvel que um objeto precise ser criado. Os chamados registros de ativa\u00e7\u00e3o s\u00e3o preparados para essa finalidade. Isso representa uma sobrecarga consider\u00e1vel, especialmente se voc\u00ea chamar essa fun\u00e7\u00e3o em um loop. Ao contr\u00e1rio do c\u00f3digo otimizado, em que o compilador s\u00f3 precisa levar em conta a chamada a um procedimento.<\/p>\n<p>No f\u00f3rum MVP, isso foi medido e cada chamada no c\u00f3digo otimizado foi executada com a mesma rapidez. O c\u00f3digo n\u00e3o otimizado ficou cada vez mais lento. J\u00e1 com 20 chamadas, levava quatro vezes mais tempo para chamar o procedimento. O atraso aumentou linearmente, tornando-se mais significativo a cada chamada adicional.<br \/>\n<img decoding=\"async\" class=\"alignnone size-full wp-image-5398\" src=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2024\/08\/image.png\" alt=\"\" width=\"944\" height=\"397\" srcset=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2024\/08\/image.png 944w, https:\/\/gdksoftware.com\/wp-content\/uploads\/2024\/08\/image-300x126.png 300w, https:\/\/gdksoftware.com\/wp-content\/uploads\/2024\/08\/image-768x323.png 768w\" sizes=\"(max-width: 944px) 100vw, 944px\" \/><\/p>\n<p>Esse exemplo e a vari\u00e1vel const s\u00e3o dois exemplos de como sua maneira de codificar afeta o que o compilador pode ou n\u00e3o otimizar. Com desempenho pior ou melhor no final.<\/p>\n","protected":false},"featured_media":0,"parent":0,"template":"","class_list":["post-5434","knowledge","type-knowledge","status-publish","hentry","knowledge-category-arquivo-delphi"],"acf":{"author":1384,"type_hero":"compact","hero_image":5354,"hero_image_position":"","hero_title":"Const ou n\u00e3o? Otimiza\u00e7\u00e3o do compilador na codifica\u00e7\u00e3o","hero_content":"","hero_link":"","hero_show_h1":true},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Const ou n\u00e3o? Otimiza\u00e7\u00e3o do compilador na codifica\u00e7\u00e3o - GDK Software<\/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:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/const-ou-nao-otimizacao-do-compilador-na-codificacao\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Const ou n\u00e3o? Otimiza\u00e7\u00e3o do compilador na codifica\u00e7\u00e3o\" \/>\n<meta property=\"og:description\" content=\"O const \u00e9 \u00fatil para um par\u00e2metro ou somente para nerds e cr\u00edticos? Deveria ser: procedure Check(const Text: string);? Ou \u00e9\u00a0procedure Check(Text: string); basicamente o mesmo? Talvez voc\u00ea nunca tenha se perguntado como o compilador lida com seu c\u00f3digo. E que efeitos isso tem em seu aplicativo. Mas se voc\u00ea souber um pouco sobre como [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/const-ou-nao-otimizacao-do-compilador-na-codificacao\" \/>\n<meta property=\"og:site_name\" content=\"GDK Software\" \/>\n<meta property=\"article:modified_time\" content=\"2024-08-27T13:54:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gdksoftware.com\/wp-content\/uploads\/2024\/08\/image.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/const-ou-nao-otimizacao-do-compilador-na-codificacao\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/const-ou-nao-otimizacao-do-compilador-na-codificacao\",\"name\":\"Const ou n\u00e3o? Otimiza\u00e7\u00e3o do compilador na codifica\u00e7\u00e3o - GDK Software\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/const-ou-nao-otimizacao-do-compilador-na-codificacao#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/const-ou-nao-otimizacao-do-compilador-na-codificacao#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gdksoftware.com\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/image.png\",\"datePublished\":\"2024-08-27T12:24:11+00:00\",\"dateModified\":\"2024-08-27T13:54:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/const-ou-nao-otimizacao-do-compilador-na-codificacao#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/const-ou-nao-otimizacao-do-compilador-na-codificacao\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/const-ou-nao-otimizacao-do-compilador-na-codificacao#primaryimage\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/image.png\",\"contentUrl\":\"https:\\\/\\\/gdksoftware.com\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/image.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\\\/const-ou-nao-otimizacao-do-compilador-na-codificacao#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Knowledgebase\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/base-de-conhecimento\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Delphi\",\"item\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\\\/knowledgebase-category\\\/arquivo-delphi\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Const ou n\u00e3o? Otimiza\u00e7\u00e3o do compilador na codifica\u00e7\u00e3o\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br#website\",\"url\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br\",\"name\":\"GDK Software\",\"description\":\"Zet de stip op je horizon\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gdksoftware.com\\\/pt-br?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Const ou n\u00e3o? Otimiza\u00e7\u00e3o do compilador na codifica\u00e7\u00e3o - GDK Software","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:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/const-ou-nao-otimizacao-do-compilador-na-codificacao","og_locale":"pt_BR","og_type":"article","og_title":"Const ou n\u00e3o? Otimiza\u00e7\u00e3o do compilador na codifica\u00e7\u00e3o","og_description":"O const \u00e9 \u00fatil para um par\u00e2metro ou somente para nerds e cr\u00edticos? Deveria ser: procedure Check(const Text: string);? Ou \u00e9\u00a0procedure Check(Text: string); basicamente o mesmo? Talvez voc\u00ea nunca tenha se perguntado como o compilador lida com seu c\u00f3digo. E que efeitos isso tem em seu aplicativo. Mas se voc\u00ea souber um pouco sobre como [&hellip;]","og_url":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/const-ou-nao-otimizacao-do-compilador-na-codificacao","og_site_name":"GDK Software","article_modified_time":"2024-08-27T13:54:43+00:00","og_image":[{"url":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2024\/08\/image.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. tempo de leitura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/const-ou-nao-otimizacao-do-compilador-na-codificacao","url":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/const-ou-nao-otimizacao-do-compilador-na-codificacao","name":"Const ou n\u00e3o? Otimiza\u00e7\u00e3o do compilador na codifica\u00e7\u00e3o - GDK Software","isPartOf":{"@id":"https:\/\/gdksoftware.com\/pt-br#website"},"primaryImageOfPage":{"@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/const-ou-nao-otimizacao-do-compilador-na-codificacao#primaryimage"},"image":{"@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/const-ou-nao-otimizacao-do-compilador-na-codificacao#primaryimage"},"thumbnailUrl":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2024\/08\/image.png","datePublished":"2024-08-27T12:24:11+00:00","dateModified":"2024-08-27T13:54:43+00:00","breadcrumb":{"@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/const-ou-nao-otimizacao-do-compilador-na-codificacao#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/const-ou-nao-otimizacao-do-compilador-na-codificacao"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/const-ou-nao-otimizacao-do-compilador-na-codificacao#primaryimage","url":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2024\/08\/image.png","contentUrl":"https:\/\/gdksoftware.com\/wp-content\/uploads\/2024\/08\/image.png"},{"@type":"BreadcrumbList","@id":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento\/const-ou-nao-otimizacao-do-compilador-na-codificacao#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gdksoftware.com\/pt-br"},{"@type":"ListItem","position":2,"name":"Knowledgebase","item":"https:\/\/gdksoftware.com\/pt-br\/base-de-conhecimento"},{"@type":"ListItem","position":3,"name":"Delphi","item":"https:\/\/gdksoftware.com\/pt-br\/knowledgebase-category\/arquivo-delphi"},{"@type":"ListItem","position":4,"name":"Const ou n\u00e3o? Otimiza\u00e7\u00e3o do compilador na codifica\u00e7\u00e3o"}]},{"@type":"WebSite","@id":"https:\/\/gdksoftware.com\/pt-br#website","url":"https:\/\/gdksoftware.com\/pt-br","name":"GDK Software","description":"Zet de stip op je horizon","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gdksoftware.com\/pt-br?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"}]}},"_links":{"self":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/knowledge\/5434","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/knowledge"}],"about":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/types\/knowledge"}],"acf:post":[{"embeddable":true,"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/team\/1384"}],"wp:attachment":[{"href":"https:\/\/gdksoftware.com\/pt-br\/wp-json\/wp\/v2\/media?parent=5434"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}