mirror of
https://github.com/golang/go
synced 2024-11-27 05:31:31 -07:00
46 lines
743 B
Go
46 lines
743 B
Go
|
// compile
|
||
|
|
||
|
// Copyright 2013 The Go Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
// Issue 5231: method values lose their variadic property.
|
||
|
|
||
|
package p
|
||
|
|
||
|
type T int
|
||
|
|
||
|
func (t T) NotVariadic(s []int) int {
|
||
|
return int(t) + s[0]
|
||
|
}
|
||
|
|
||
|
func (t T) Variadic(s ...int) int {
|
||
|
return int(t) + s[0]
|
||
|
}
|
||
|
|
||
|
type I interface {
|
||
|
NotVariadic(s []int) int
|
||
|
Variadic(s ...int) int
|
||
|
}
|
||
|
|
||
|
func F() {
|
||
|
var t T
|
||
|
var p *T = &t
|
||
|
var i I = p
|
||
|
|
||
|
nv := t.NotVariadic
|
||
|
nv = p.NotVariadic
|
||
|
nv = i.NotVariadic
|
||
|
var s int = nv([]int{1, 2, 3})
|
||
|
|
||
|
v := t.Variadic
|
||
|
v = p.Variadic
|
||
|
v = i.Variadic
|
||
|
s = v(1, 2, 3)
|
||
|
|
||
|
var f1 func([]int) int = nv
|
||
|
var f2 func(...int) int = v
|
||
|
|
||
|
_, _, _ = f1, f2, s
|
||
|
}
|