43 lines
		
	
	
		
			643 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			643 B
		
	
	
	
		
			Go
		
	
	
	
| // +build ignore
 | |
| 
 | |
| // This is a slice of the fmt package.
 | |
| 
 | |
| package main
 | |
| 
 | |
| type pp struct {
 | |
| 	field interface{}
 | |
| }
 | |
| 
 | |
| func newPrinter() *pp {
 | |
| 	return new(pp)
 | |
| }
 | |
| 
 | |
| func Fprintln(a ...interface{}) {
 | |
| 	p := newPrinter()
 | |
| 	p.doPrint(a, true, true)
 | |
| }
 | |
| 
 | |
| func Println(a ...interface{}) {
 | |
| 	Fprintln(a...)
 | |
| }
 | |
| 
 | |
| func (p *pp) doPrint(a []interface{}, addspace, addnewline bool) {
 | |
| 	print(a[0]) // @types S | string
 | |
| 	stringer := a[0].(interface {
 | |
| 		String() string
 | |
| 	})
 | |
| 
 | |
| 	stringer.String()
 | |
| 	print(stringer) // @types S
 | |
| }
 | |
| 
 | |
| type S int
 | |
| 
 | |
| func (S) String() string { return "" }
 | |
| 
 | |
| func main() {
 | |
| 	Println("Hello, World!", S(0))
 | |
| }
 | |
| 
 | |
| // @calls (*main.pp).doPrint -> (main.S).String
 |