On Tue, Jun 20, 2017 at 12:46 PM, Will Hawkins <hawki...@borlaugic.com> wrote: > > On Jun 20, 2017 3:40 PM, "Ian Lance Taylor" <i...@golang.org> wrote: > > On Mon, Jun 19, 2017 at 11:30 PM, Will Hawkins <hawki...@borlaugic.com> > wrote: >> >> On Tuesday, June 20, 2017 at 2:19:25 AM UTC-4, Volker Dobler wrote: >>> >>> On Tuesday, 20 June 2017 06:52:58 UTC+2, Will Hawkins wrote: >>>> >>>> I know that there is a difference between interface values and dynamic >>>> types and dynamic values. Is it possible that the documentation about >>>> the %T >>>> is misleading? Should it be more specific that it returns the variable's >>>> "dynamic type." >>>> [...] >>>> >>>> Should the documentation for %T be updated to say that it prints the >>>> variable's dynamic type? >>> >>> >>> Well, no. >>> Look at fmt.Printf: It take a format string and a bunch of interface{} >>> values to >>> be printed. If %T would print the static type it always would print >>> interface{}. >>> To be useful Printf has too look inside it's arguments and inside is a >>> HelloInt. >> >> >> Mr. Dobler, >> >> Thank you for your reply! >> >> I agree with your statement that to be useful, the Printf function must do >> what it does. And, of course I want it to be useful :-) >> >> However, I am still concerned about this language from the spec: >> >> "The static type (or just type) of a variable is the type given in its >> declaration, the type provided in the new call or composite literal, or >> the >> type of an element of a structured variable." >> >> Where it says "just type" means that anywhere the documentation uses the >> word "type" without qualification, it is referring to the static type. In >> the case of Printf, then, yes, %T should always print "interface{}" >> because >> that is the variable's static type. >> >> I 200% (that's more than 100% :-)) agree with you that is not useful. >> However, based on the language in the spec, it is how I would expect it to >> operate. >> >> I sincerely appreciate your willingness to read through my message and >> offer >> your reply. I am already learning very much! > > I think you are being misled by trying to use the language in the spec > to interpret the meaning of %T in the fmt package. Perhaps the fmt > package docs should be updated, but the actual behavior is not going > to change. What %T prints is the type of the value passed in, unless > the value passed in has an interface type, in which case it prints the > dynamic type of the value. > > Ian > > > Thank you so much for your reply. I definitely agree with you and do not > want the behavior to change at all. I just wanted the language to be > clarified. As I said in my last email, it seems like any change to the fmt > documentation would also need to be made to the reflect documentation. The > word "type" in both of those areas obviously and correctly refers to the > dynamic type which is in conflict with the definition of the (unqualified) > term type from the spec. Is there a place that I can advocate for such a > change?
You can open an issue (https://golang.org/issue) or just send in a change (see https://golang.org/doc/contribute.html). Thanks. Ian -- 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.