chan
类型本是就是指针, 因此直接打印即可, 不需要再取地址.
如果在取地址就是"指向指针的指针"(pointer to pointer) 即类似C/C++中的二级指针 , 如:int a; int *p = &a; int **pp = &p;
其中 pp
就是二级指针
package main
import "fmt"
func main() {
c := make(chan int)
n := &node{
ch: make(chan int),
}
fmt.Println("&c:", &c)
fmt.Println("&n:", &n.ch)
fmt.Println("c:", c)
fmt.Println("n:", n.ch)
fmt.Println()
// 赋值
c = n.ch
fmt.Println("&c:", &c)
fmt.Println("&n:", &n.ch)
fmt.Println("c:", c)
fmt.Println("n:", n.ch)
fmt.Println()
// 往c中添加数据
go func() {
c <- 1
c <- 2
}()
// 从c中可以获取数据
e := <-c
fmt.Println("v1:", e)
// 从n.ch中也可以获取数据
d := <-n.ch
fmt.Println("v2:", d)
fmt.Println()
fmt.Println("&c:", &c)
fmt.Println("&n:", &n.ch)
fmt.Println("c:", c)
fmt.Println("n:", n.ch)
}
type node struct {
ch chan int
}
输出
&c: 0xc000102018
&n: 0xc000102020
c: 0xc00010c000
n: 0xc00010c060
&c: 0xc000102018
&n: 0xc000102020
c: 0xc00010c060
n: 0xc00010c060
v1: 1
v2: 2
&c: 0xc000102018
&n: 0xc000102020
c: 0xc00010c060
n: 0xc00010c060