mirror of
				https://github.com/golang/go.git
				synced 2025-11-04 02:30:57 +00:00 
			
		
		
		
	None of the current generic type switch test cases exercise type switches where the instantiated case is an interface type. Change-Id: I9272fa61b8dde1fe1a3702d524d4f40253ef19b2 Reviewed-on: https://go-review.googlesource.com/c/go/+/390354 Trust: Matthew Dempsky <mdempsky@google.com> Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
		
			
				
	
	
		
			33 lines
		
	
	
	
		
			648 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			648 B
		
	
	
	
		
			Go
		
	
	
	
	
	
// run
 | 
						|
 | 
						|
// Copyright 2021 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.
 | 
						|
 | 
						|
package main
 | 
						|
 | 
						|
func f[T any](i interface{}) {
 | 
						|
	switch i.(type) {
 | 
						|
	case T:
 | 
						|
		println("T")
 | 
						|
	case int:
 | 
						|
		println("int")
 | 
						|
	case int32, int16:
 | 
						|
		println("int32/int16")
 | 
						|
	case struct{ a, b T }:
 | 
						|
		println("struct{T,T}")
 | 
						|
	default:
 | 
						|
		println("other")
 | 
						|
	}
 | 
						|
}
 | 
						|
func main() {
 | 
						|
	f[float64](float64(6))
 | 
						|
	f[float64](int(7))
 | 
						|
	f[float64](int32(8))
 | 
						|
	f[float64](struct{ a, b float64 }{a: 1, b: 2})
 | 
						|
	f[float64](int8(9))
 | 
						|
	f[int32](int32(7))
 | 
						|
	f[int](int32(7))
 | 
						|
	f[any](int(10))
 | 
						|
	f[interface{ M() }](int(11))
 | 
						|
}
 |