• go pkg


    fmt

    Scanln用来读取输入数据

    示例:

    package main                                                                                                                          
    
    import (
        "fmt"
        "os"
        "time"
    )
    
    func main() {
        out := os.Stdout
        var d0, d1, d2, d3 string
    
        for {
            //要读取完整的一行数据, 空格分隔的每个串被一次写入到参数中, 第一个返回值是读取的参数数目,第二个返回值是错误信息
            nd, err := fmt.Scanln(&d0, &d1, &d2, &d3)
            if err == nil && nd != 0 { 
                fmt.Fprintf(out, "d0:%s d1:%s d2:%s d3:%s", d0, d1, d2, d3) 
                fmt.Fprintf(out, "len:%d
    ", len(d3))
                fmt.Fprintf(out, "num:%d
    ", nd) 
            } else {
                fmt.Fprintf(out, "num:%d err:%v
    ", nd, err)
            }   
            time.Sleep(time.Second)
        }   
    }

    输出:

    #1,如果输入的参数个数为3个
    a aa aaa
    输出: nd:
    3 err:unexpected newline #2,如果输入的参数个数为4个
    a aa aaa aaaa
    输出: d0:a d1:aa d2:aaa d3:aaaalen:
    4 num:4 #3,如果输入的参数个数为5个
    a aa aaa aaaa aaaaa 输出: num:
    4 err:expected newline num:1 err:unexpected newline

    fmt.Fprintf(out)可以用fmt.Println()替代

    bufio

    //生成一个新的reader
    func NewReader(rd io.Reader) *Reader
    //生成一个新的reader,size为该reader的最短buffer长度
    func NewReaderSize(rd io.Reader, size int) *Reader
    //返回buffer中未被读取的长度
    func (b *Reader) Buffered() int
    //skip掉buffer,长度为n字节
    func (b *Reader) Discard(n int) (discarded int, err error)
    //返回next n 字节数据
        func (b *Reader) Peek(n int) ([]byte, error)
    //读取buffer的数据,读取完毕或者读取p长度的字节
        func (b *Reader) Read(p []byte) (n int, err error)
    //从buffer中读取一个字节
        func (b *Reader) ReadByte() (c byte, err error)
    //从buffer中读取若干字节,到delim截止,返回包含delim
        func (b *Reader) ReadBytes(delim byte) (line []byte, err error)
    //读取一行,
    结尾
        func (b *Reader) ReadLine() (line []byte, isPrefix bool, err error)
    //读取一个utf编码字,可能1个字节,也可能3个字节
        func (b *Reader) ReadRune() (r rune, size int, err error)
    //读取一段数据,delim截止,返回为[]byte类型
        func (b *Reader) ReadSlice(delim byte) (line []byte, err error)
    //读取一段数据,delim截止,返回string类型
        func (b *Reader) ReadString(delim byte) (line string, err error)
    //抛弃当前buffer的所有数据,并且重置当前值为新reader r,同时重置其它信息
        func (b *Reader) Reset(r io.Reader)
    //回退一个byte,回退不包含0
        func (b *Reader) UnreadByte() error
    //回退一个utf编码字,包含0
        func (b *Reader) UnreadRune() error
    //reader写入到writer中,类似于重新向的概念,需要每次
        func (b *Reader) WriteTo(w io.Writer) (n int64, err error)
  • 相关阅读:
    开源软件
    delphi 语法 点滴总结clientdataset
    combobox 下拉框 高度 调节 呵呵
    Delphi7中ClientDataSet的排序
    clientdataset 修改记录 成功
    http://bbs.csdn.net/topics/340046630 dbgrid怎么获取当前记录值
    Delphi中StrToDateTime函数TFormatSettings参数的使用
    IncSecond:将一个TDateTime变量加减一定数量的秒数
    clientdataset 做为 单机数据库的 使用 学习
    cmake命令用法整理list命令
  • 原文地址:https://www.cnblogs.com/helww/p/4877213.html
Copyright © 2020-2023  润新知