2012-03-06 17:24:00 -07:00
|
|
|
// Copyright 2012 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.
|
|
|
|
|
|
|
|
// This file contains the code snippets included in "The Laws of Reflection."
|
|
|
|
|
2012-02-29 16:05:51 -07:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bufio"
|
|
|
|
"bytes"
|
|
|
|
"io"
|
|
|
|
"os"
|
|
|
|
)
|
|
|
|
|
|
|
|
type MyInt int
|
|
|
|
|
|
|
|
var i int
|
|
|
|
var j MyInt
|
|
|
|
|
|
|
|
// STOP OMIT
|
|
|
|
|
|
|
|
// Reader is the interface that wraps the basic Read method.
|
|
|
|
type Reader interface {
|
|
|
|
Read(p []byte) (n int, err error)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Writer is the interface that wraps the basic Write method.
|
|
|
|
type Writer interface {
|
|
|
|
Write(p []byte) (n int, err error)
|
|
|
|
}
|
|
|
|
|
|
|
|
// STOP OMIT
|
|
|
|
|
|
|
|
func readers() { // OMIT
|
|
|
|
var r io.Reader
|
|
|
|
r = os.Stdin
|
|
|
|
r = bufio.NewReader(r)
|
|
|
|
r = new(bytes.Buffer)
|
|
|
|
// and so on
|
|
|
|
// STOP OMIT
|
|
|
|
}
|
|
|
|
|
|
|
|
func typeAssertions() (interface{}, error) { // OMIT
|
|
|
|
var r io.Reader
|
|
|
|
tty, err := os.OpenFile("/dev/tty", os.O_RDWR, 0)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
r = tty
|
|
|
|
// STOP OMIT
|
|
|
|
var w io.Writer
|
|
|
|
w = r.(io.Writer)
|
|
|
|
// STOP OMIT
|
|
|
|
var empty interface{}
|
|
|
|
empty = w
|
|
|
|
// STOP OMIT
|
|
|
|
return empty, err
|
|
|
|
}
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
}
|