Go语言学习笔记---通讯
来源:互联网 发布:淘宝网店注册 编辑:程序博客网 时间:2024/06/06 01:08
Go的I/O核心是接口io.Reader和io.Writer
例:(从文件读取)无缓冲
package main
import "os"
func main(){
buf := make([]byte, 1024)
f, _ := os.Open("/etc/passwd") //打开文件,os.Open返回一个实现了io.Reader和io.Writer的*os.File;
defer f.Close() //确保关闭了f;
for {
n, _ := f.Read(buf) //一次读取1024字节
if n == 0 { //到达文件末尾
break;
}
os.Stdout.Write(buf[:n]) //将内容写入os.Stdout
}
}
输出结果:
/etc/passwd文件中的内容
如果想要使用缓冲IO,则有bufio包
例:(从文件读取)有缓冲
package main
import (
"os"
"bufio"
)
func main(){
buf := make([]byte, 1024)
f, _ := os.Open("/etc/passwd")
defer f.Close()
r := bufio.NewReader(f) //转换f为有缓冲的Reader。NewReader需要一个io.Reader
w := bufio.NewWriter(os.Stdout)
defer w.Flush()
for {
n, _ := r.Read(buf) //从Reader读取,而向Writer写入,然后向屏幕输出文件
if n == 0 {
break;
}
w.Write(buf[0:n])
}
}
输出结果:
/etc/passwd文件的内容
命令行参数
来自命令行的参数在程序中通过字符串sliceos.Args获取,导入包os即可.flag包有着精巧的接口,同样提供了解析标识的方法。
执行命令
os/exec包有函数可以执行外部命令,这也是在Go中主要的执行命令的方法
例:
package main
import "fmt"
import "os/exec"
func main(){
cmd := exec.Command("/bin/ls", "-l")
buf,_ := cmd.Output()
for _, val := range buf {
fmt.Printf("%c", val)
}
}
输出结果:
total 4
-rw-r--r-- 1 root root 173 Jan 10 15:22 demo.go
网络
所有网络相关的类型和函数可以在net包中找到。这其中最重要的函数是Dial。当Dial到远程系统,这个函数返回Conn接口类型,可以用于发送或接收信息。函数Dial简洁的抽象了网络层和传输层。因此IPv4或者IPv6,TCP或者UDP可以共用一个接口。
- Go语言学习笔记---通讯
- 41.笔记go语言——通讯
- Go语言学习笔记
- Go语言学习笔记
- go语言学习笔记
- Go语言学习笔记
- GO语言学习笔记
- Go语言学习笔记
- GO语言学习笔记
- Go语言学习笔记
- Go语言学习笔记
- Go语言学习笔记
- go语言学习笔记
- Go学习笔记-go语言基础
- Go 学习笔记:Go 语言数据类型
- go语言学习笔记11
- GO语言学习笔记一
- Go语言学习笔记1
- listview的常用属性
- [C#基础知识]之ArrayList的使用方法【转载】
- 滑动菜单栏(一)开源项目SlidingMenu的使用
- DSB,ISB,DMB指令
- Go语言学习笔记---并发
- Go语言学习笔记---通讯
- lua学习笔记之table的遍历
- 什么是HIS
- 秀野堂主:HTML5游戏架构思考
- RAC环境下RMAN-06214
- 分布式系统与集群的区别(一)
- X86上的Android手机:性能与兼容可否兼得
- NSSortDescriptor
- 四个流行的Java连接池