I/O接口源码:
Go
type Reader interface {
Read(p []byte) (n int, err error)
}
type Writer interface {
Write(p []byte) (n int, err error)
}
一、标准I/O
从标准输入中读取数据:
NewReader需要传入一个实现了Reader接口的类,os.Sdtin的类型为*File,这个类实现了Reader接口,使用以下命令查看源码文档:
bash
$ go doc os.File
os.Stdin对应1号文件描述符的文件,从标准输入读取数据:
Go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
buf := bufio.NewReader(os.Stdin)
line, err := buf.ReadString('\n')
if err != nil {
fmt.Println("read Stdio error :", err)
}
fmt.Println("buf :", line)
}
输出数据到标准输出:
与标准输入同理
Go
package main
import (
"bufio"
"os"
)
func main() {
buf := bufio.NewWriter(os.Stdout)
buf.Write([]byte("hello world"))
buf.Flush()
}
二、文件I/O
使用IO标准库:
Go
package main
import (
"fmt"
"io"
"os"
)
func main() {
file, _ := os.Open("./text.txt")
defer file.Close()
buf, _ := io.ReadAll(file)
fmt.Println("file context :", string(buf))
}
Go
package main
import (
"io"
"os"
)
func main() {
file, _ := os.OpenFile("./text.txt", os.O_WRONLY|os.O_TRUNC, os.ModePerm)
defer file.Close()
io.WriteString(file, "ni hao")
}
三、网络I/O
Go
package main
import (
"bufio"
"fmt"
"net"
)
func main() {
listener, _ := net.Listen("tcp", "127.0.0.1:1234")
defer listener.Close()
conn, _ := listener.Accept()
conn.Write([]byte("hello world"))
buf := bufio.NewReader(conn)
line, _ := buf.ReadString('\n')
fmt.Println("recv :", line)
}
若有错误,请大佬指出!