[go-nuts] C variadic macro equivalent in Golang?

2019-11-30 Thread minforth
C allows comma-separated argument lists via variadic macros. Whereas AFAIK golang allows only variadic arguments of the same type. (Please excuse if I am wrong, I am considering myself a golang newbie) C demo program that prints: -- -- 1 and 1 1 and 1 // ## C variadic macro test #include

Re: [go-nuts] C variadic macro equivalent in Golang?

2019-11-30 Thread Robert Engels
Make the type interface{} and you can pass anything and use reflect > On Nov 30, 2019, at 2:08 PM, minfo...@arcor.de wrote: > >  > C allows comma-separated argument lists via variadic macros. Whereas AFAIK > golang allows only variadic arguments of the same type. > (Please excuse if I am wrong,

Re: [go-nuts] C variadic macro equivalent in Golang?

2019-11-30 Thread minforth
Thanks, but then you would have to define the interface beforehand for any argument type. And there are a lot: format strings, strings, characters, integers of different size, floating-pont numbers, file-ids Meanwhile I found this discussion: https://github.com/golang/go/issues/18605 which hints

Re: [go-nuts] C variadic macro equivalent in Golang?

2019-11-30 Thread Michael Jones
You might refer to... https://blog.learngoprogramming.com/golang-variadic-funcs-how-to-patterns-369408f19085 ...to better appreciate Robert's advice. As he suggested, a variadic Go function accepting a slice of the special, magic "empty interface" type ("interface{}") can indeed do anything. The

Re: [go-nuts] C variadic macro equivalent in Golang?

2019-11-30 Thread Bakul Shah
func PR(f string, a ...interface{}) { if d { return } fmt.Fprintf(os.Stderr, f, a...) } Add appropriate imports. > On Nov 30, 2019, at 12:08 PM, minfo...@arcor.de wrote: > > C allows comma-separated argument lists via variadic macros. Whereas AFAIK > golang allows only variadi

Re: [go-nuts] C variadic macro equivalent in Golang?

2019-12-01 Thread minforth
That did it: // --- variad.go -- variadic function test package main import("fmt";"os") // flags var df,ef int = 1,1 // variadic function thru empty interface func PR(f string, a ...interface{}) { if df!=0 { fmt.Printf(f, a...) if ef!=0 { fmt.Fprintf(os.Stderr,f, a...) } } } fun