@ -0,0 +1,15 @@ | |||||
package main | |||||
import "fmt" | |||||
func test(a int, b int, c ...int) { | |||||
fmt.Printf("IMY*********** %v %v %v\n", a, b, c) | |||||
} | |||||
func main() { | |||||
// test(1,2,3, 4, 5, 6, 7) // it is ok | |||||
//c := []int{2, 3, 4} | |||||
// test(3,4, c...) | |||||
test(3, 4) | |||||
//test(3,4,[]int{3,4,5}) | |||||
} |
@ -0,0 +1,33 @@ | |||||
package main | |||||
func consumer(data chan int, done chan bool) { | |||||
//消费者 | |||||
for x := range data { | |||||
println("recevie ", x) | |||||
} | |||||
done <- true | |||||
} | |||||
func product(data chan int) { | |||||
for i := 0; i < 10; i++ { | |||||
data <- i | |||||
} | |||||
close(data) | |||||
} | |||||
var X = 100 | |||||
func main() { | |||||
done := make(chan bool) | |||||
data := make(chan int) | |||||
go consumer(data, done) | |||||
go product(data) | |||||
v := <-done | |||||
print("get done ", v) | |||||
Y := 300 | |||||
print(X, Y) | |||||
X, Y := 10, 20 | |||||
print(X, Y) | |||||
} |
@ -0,0 +1,22 @@ | |||||
package main | |||||
import "fmt" | |||||
func worker(ch chan struct{}) { | |||||
v, ok := <-ch | |||||
if ok { | |||||
fmt.Printf("IMY*********** get one null msg %T\n", v) | |||||
} | |||||
println("IMY*********** get one null msg \n") | |||||
close(ch) | |||||
} | |||||
func main() { | |||||
ch := make(chan struct{}) | |||||
go worker(ch) | |||||
// send to a null msg to worker | |||||
ch <- struct{}{} | |||||
<-ch | |||||
println("IMY*********** over\n") | |||||
} |
@ -0,0 +1,21 @@ | |||||
package main | |||||
type Lamp struct{} | |||||
func (l Lamp) On() { | |||||
println("IMY******** it is On \n") | |||||
} | |||||
func (l Lamp) Off() { | |||||
println("IMY******** is is Off \n") | |||||
} | |||||
func main() { | |||||
var lamp Lamp | |||||
lamp.On() | |||||
lamp.Off() | |||||
Lamp{}.On() | |||||
Lamp{}.Off() | |||||
} |