判定字符ch是否是数字:
if(ch>='0' &&ch<='9')
判定字符ch是否是字母:
if(ch>='a' &&ch<='z' || ch>='A' &&ch<='Z')
当然,有已经定义好的库函数用来判定是否数字和字母,不要加加载头文件<ctype.h>
判定字符ch是否是数字:
if(isalnum(ch))
判定字符ch是否是字母:
if(isalpha(ch))
这两个函数都是判定成立,结果是true也就是1,判定不成立,结果是false,也就是0.
第一个问题,打开文件应添加"|os.O_WRONLY"file, err := os.OpenFile("data.dat",os.O_CREATE|os.O_APPEND|os.O_WRONLY,0777)
第二个问题,将Count方法中的 "ch<-i"放到方法的最后一行就可以了。
因为一旦“ch<-i"执行了,main方法中的 "<-ch"就会执行通过当所有的"<-ch"执行完后程序就结束了。但这时Count的线程方法还来不及执行完(打开文件的速度相对较慢),所以仅仅执行一次文件操作就结束了
packagemainimport(
"fmt"
"sync"
)
//实现一个生产者和消费者
/*生产者产生数据添加到通道里面,消费者消费数据从通道里面
不带缓存实现
*/
funcmain(){
ch:=make(chanint)
varwgsync.WaitGroup
wg.Add(2)
goproducers(&wg,ch)
goconsumer(&wg,ch)
wg.Wait()
}
//生产者
funcproducers(wg*sync.WaitGroup,chchanint){
fori:=0i<10i++{
fmt.Println("send:",i)
ch<-i
}
close(ch)
wg.Done()
}
//消费者
funcconsumer(wg*sync.WaitGroup,chchanint){
forv:=rangech{
fmt.Println("recv:",v)
}
wg.Done()
}
���$�