On 13 September 2016 at 08:22, Markus Zimmermann <zimm...@gmail.com> wrote:
> On Monday, September 12, 2016 at 3:41:35 PM UTC+2, adon...@google.com > wrote: >> >> unused constants and types cost nothing at run time. It's not that >> simple, of course, because constant and type declarations may be the only >> uses of an import of a package whose initialization has some cost; but this >> is quite marginal. >> > > The const declaration of my example is inside an unexported function body. > It can not be accessed by an import. So, it should really matter only at > compile time, right? > Right. The import case I was referring to is this: import "p" func main() { const unused = p.K } The unused constant causes p to be an (unnecessary) dependency, which in turn causes p.init to be executed. However, I am referring to the definition of https://golang.org/doc/faq# > unused_variables_and_imports which states "... Go refuses to compile > programs with unused variables or imports, trading short-term convenience > for long-term build speed and program clarity." Which holds true in the > same way for an unused const as it does for an unused variable. However, > even though it produces the same results, i.e. a new declaration which > decreases the program clarity, only the variable declaration is marked. > You are right that the motivation given in the FAQ should apply equally to constants and types. Additionally, if an unused constant is compiled into the binary it does > also matter to the binary size, even just a little bit. An unused constant is unlikely to affect the size of the final executable since in a typical compiler generates code or data for a constant only when it is used. It will be present in the intermediate .a files though. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.