Re: [go-nuts] Expanding variables and fmt.Printf() issue

2020-06-29 Thread Marvin Renich
[pedantic correction]

* Marvin Renich  [200629 14:10]:
> The final argument to Printf is []interface{}, while you are trying to
  ^
  ...interface{}

...Marvin

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/20200629182020.aqgs6y2u4qufxbrj%40basil.wdw.


Re: [go-nuts] Expanding variables and fmt.Printf() issue

2020-06-29 Thread Marvin Renich
* yves baumes  [200629 03:22]:
> Hello,
> 
> considering this code
> 
> ```
> package main
> 
> import (
> "fmt"
> )
> 
> func main() {
> host := []string{"127", "0", "0", "1"}
> 
> fmt.Printf("%v.%v.%v.%v\n", host[0], host[1], host[2], host[3])
> fmt.Printf("%v.%v.%v.%v\n", host[0:4]...)
> }
> ```
> 
> The first Printf works and prints the host value.
> While the second one does not compile : "./args.go:11:34: cannot use 
> host[0:4] (type []string) as type []interface {} in argument to fmt.Printf"
> 
> If I use append() instead of Printf(), this expanding of the host variables 
> just works out. Is this a compiler bug in the case of the fmt.Printf() ?

>From the language spec at
https://golang.org/ref/spec#Passing_arguments_to_..._parameters:

If the final argument is assignable to a slice type []T, it is
passed unchanged as the value for a ...T parameter if the argument
is followed by  In this case no new slice is created.

The final argument to Printf is []interface{}, while you are trying to
pass []string.  In order for this to work, []string would have to be
assignable to []interface{}, which it isn't.

This is related to a FAQ at
https://golang.org/doc/faq#convert_slice_of_interface.

If, after reading the above links and the definition of assignability at
https://golang.org/ref/spec#Assignability, you are still unclear why it
is not compiling, ask on the list for more help.

...Marvin

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/20200629181003.attbsi36qwc6rrtv%40basil.wdw.


Re: [go-nuts] Expanding variables and fmt.Printf() issue

2020-06-29 Thread Jan Mercl
On Mon, Jun 29, 2020 at 9:22 AM yves baumes  wrote:

> If I use append() instead of Printf(), this expanding of the host variables 
> just works out. Is this a compiler bug in the case of the fmt.Printf() ?

No bug. That's how variable arguments and assignability rules are
specified to work.

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAA40n-WgLHeUhyEYtmVu1B1zeHByxm%2Ba5JyCqVhVU1VnAtddgA%40mail.gmail.com.


[go-nuts] Expanding variables and fmt.Printf() issue

2020-06-29 Thread yves baumes
Hello,

considering this code

```
package main

import (
"fmt"
)

func main() {
host := []string{"127", "0", "0", "1"}

fmt.Printf("%v.%v.%v.%v\n", host[0], host[1], host[2], host[3])
fmt.Printf("%v.%v.%v.%v\n", host[0:4]...)
}
```

The first Printf works and prints the host value.
While the second one does not compile : "./args.go:11:34: cannot use 
host[0:4] (type []string) as type []interface {} in argument to fmt.Printf"

If I use append() instead of Printf(), this expanding of the host variables 
just works out. Is this a compiler bug in the case of the fmt.Printf() ?

Regards
Yves.

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/5fe08421-eaa4-4285-bd46-ecdfc5403465o%40googlegroups.com.