func read( r io.Reader)([]byte, error){
return []byte{}, errors.New("my fault")
}
return []byte{}, errors.New("my fault")
}
2018-03-12
我来个简化版:
type Cat struct{
name string
age int
addr string
}
func (c *Cat) Grow(){
}
func (c *Cat ) Move( string ) string{
return ""
}
只需要实现接口所定义的那些函数即可。
type Cat struct{
name string
age int
addr string
}
func (c *Cat) Grow(){
}
func (c *Cat ) Move( string ) string{
return ""
}
只需要实现接口所定义的那些函数即可。
2018-03-11
generator = func(company string, department string, sn uint32) string{
// return "Gophers-RD-1"
return appendSn(company + "-" + department+ "-" , sn)
}
// return "Gophers-RD-1"
return appendSn(company + "-" + department+ "-" , sn)
}
2018-03-11
// return "Gophers-RD-1" 感觉这样写枉费了作者良苦用心
于是改为:
return appendSn(company + "-" + department+ "-" , sn)
于是改为:
return appendSn(company + "-" + department+ "-" , sn)
2018-03-11
指针的本质的地址
指针须声明类型
只可以**p,但不能有&&p
地址是只读的
&可抵消,即&a=a
空指针不能取指针值
指针须声明类型
只可以**p,但不能有&&p
地址是只读的
&可抵消,即&a=a
空指针不能取指针值
2018-03-11
package main
func main() {
var a int = 123
var b *int = &a //指针变量b
println(a) //值
println(&a) //地址
println(b) //值(本质也是一个地址)
println(&b) //地址
println(*b) //取指针值
}
func main() {
var a int = 123
var b *int = &a //指针变量b
println(a) //值
println(&a) //地址
println(b) //值(本质也是一个地址)
println(&b) //地址
println(*b) //取指针值
}
2018-03-11
func main() {
ch4 := make(chan int, 1)
for i := 0; i < 4; i++ {
select {
case e, ok := <-ch4:
if !ok {
fmt.Println("End.")
return
}
fmt.Println(e)
close(ch4)
default:
fmt.Println("No Data!")
ch4 <- 1
//fmt.Println("1")
}
}
}
ch4 := make(chan int, 1)
for i := 0; i < 4; i++ {
select {
case e, ok := <-ch4:
if !ok {
fmt.Println("End.")
return
}
fmt.Println(e)
close(ch4)
default:
fmt.Println("No Data!")
ch4 <- 1
//fmt.Println("1")
}
}
}
2018-03-09