go语言之进阶篇 channel介绍】的更多相关文章

1.channel介绍 和map类似,channel也一个对应make创建的底层数据结构的引用. 当我们复制一个channel或用于函数参数传递时,我们只是拷贝了一个channel引用,因此调用者何被调用者将引用同一个channel对象.和其它的引用类型一样,channel的零值也是nil. 定义一个channel时,也需要定义发送到channel的值的类型.channel可以使用内置的make()函数来创建: make(chan Type) //等价于make(chan Type, 0) ma…
1.go语音之进阶篇 示例: package main import "fmt" type Humaner interface { //子集 sayhi() } type Personer interface { //超集 Humaner //匿名字段,继承了sayhi() sing(lrc string) } type Student struct { name string id int } //Student实现了sayhi() func (tmp *Student) sayhi…
1.单向channel的应用 示例: package main import ( "fmt" ) //此通道只能写,不能读 func producer(out chan<- int) { for i := 0; i < 10; i++ { out <- i * i } close(out) } //此channel只能读,不能写 func consumer(in <-chan int) { for num := range in { fmt.Println(&q…
1.单向channel特点 package main //"fmt" func main() { //创建一个channel, 双向的 ch := make(chan int) //双向channel能隐式转换为单向channel var writeCh chan<- int = ch //只能写,不能读 var readCh <-chan int = ch //只能读,不能写 writeCh <- 666 //写 //<-writeCh //err, inva…
1.通过range遍历channel内容 package main import ( "fmt" ) func main() { ch := make(chan int) //创建一个无缓存channel //新建一个goroutine go func() { for i := 0; i < 5; i++ { ch <- i //往通道写数据 } //不需要再写数据时,关闭channel close(ch) //ch <- 666 //关闭channel后无法再发送数…
1.关闭channel package main import ( "fmt" ) func main() { ch := make(chan int) //创建一个无缓存channel //新建一个goroutine go func() { for i := 0; i < 5; i++ { ch <- i //往通道写数据 } //不需要再写数据时,关闭channel close(ch) //ch <- 666 //关闭channel后无法再发送数据 }() //别…
1.有缓冲channel 示例:  有缓存会阻塞,当读取完其中数值时,又可以写入. package main import ( "fmt" "time" ) func main() { //创建一个有缓存的channel ch := make(chan int, 3) //len(ch)缓冲区剩余数据个数, cap(ch)缓冲区大小 fmt.Printf("len(ch) = %d, cap(ch)= %d\n", len(ch), cap(ch…
1.无缓冲channel 示例: package main import ( "fmt" "time" ) func main() { //创建一个无缓存的channel ch := make(chan int, 0) //len(ch)缓冲区剩余数据个数, cap(ch)缓冲区大小 fmt.Printf("len(ch) = %d, cap(ch)= %d\n", len(ch), cap(ch)) //新建协程 go func() { for…
一.文件常用操作接口介绍 1.创建文件 法1: 推荐用法 func Create(name string) (file *File, err Error) 根据提供的文件名创建新的文件,返回一个文件对象,默认权限是0666的文件,返回的文件对象是可读写的. 法2: func NewFile(fd uintptr, name string) *File 根据文件描述符创建相应的文件,返回一个文件对象 2.打开文件 法1: func Open(name string) (file *File, er…
下面这些函数来自于strings包,这里介绍一些我平常经常用到的函数,更详细的请参考官方的文档. 一.字符串操作常用函数介绍 1.Contains func Contains(s, substr string) bool 功能:字符串s中是否包含substr,返回bool值 示例: fmt.Println(strings.Contains("seafood", "foo")) fmt.Println(strings.Contains("seafood&qu…