| // Copyright 2011 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 types |
| |
| // A Chan represents a channel type. |
| type Chan struct { |
| dir ChanDir |
| elem Type |
| } |
| |
| // A ChanDir value indicates a channel direction. |
| type ChanDir int |
| |
| // The direction of a channel is indicated by one of these constants. |
| const ( |
| SendRecv ChanDir = iota |
| SendOnly |
| RecvOnly |
| ) |
| |
| // NewChan returns a new channel type for the given direction and element type. |
| func NewChan(dir ChanDir, elem Type) *Chan { |
| return &Chan{dir: dir, elem: elem} |
| } |
| |
| // Dir returns the direction of channel c. |
| func (c *Chan) Dir() ChanDir { return c.dir } |
| |
| // Elem returns the element type of channel c. |
| func (c *Chan) Elem() Type { return c.elem } |
| |
| func (t *Chan) Underlying() Type { return t } |
| func (t *Chan) String() string { return TypeString(t, nil) } |