zoukankan      html  css  js  c++  java
  • go 学习之fmt包

    基本模式
    fmt 方法可以大致分为 print, scan两类, 根据基础方法可以构建特定方法。


    Print 将参数写入字符串或io.writer

    scan 从字符串或 io.Reader 读取指定数据, 并输出

    Print
    Print 方法的几种模式

    基础模式: [name] Print 返回默认格式化的字符串

    写入模式: F[name] 返回写入字节 例如: Fprint

    字符模式: S[name] 返回字符 例如: Sprint

    模板模式: [name]f 根据模板格式化 例如: Printf

    换行模式: [name]ln 输出后带换行 例如: Println

    模式可组合, 例如 Fprintf, Sprintf

    Print
    默认格式化,返回字符串
    func Print(a ...interface{}) (n int, err error)
    
        fmt.Print("name", 23, []byte("show me"))
        // -> name23 [115 104 111 119 32 109 101]
    
    
    Printf 模板模式
    根据模板使用默认格式输出
    func Printf(format string, a ...interface{}) ( str string, err error)
    
    
    
    str, _ := fmt.Printf("name: %s", "coco")
    
    // str -> "name: coco"
    
    
    
    Fprint 写入模式
    将数据写入 io.Writer
    func Fprint(w io.Writer, a ...interface{}) (n int, err error)
    
    
        file, _ := os.OpenFile("./target.js", os.O_RDWR, os.ModeAppend)
    
        n, err := fmt.Fprint(file, "name", 24)
        
        // n, err -> 6, nil
        
    
    
    
    Sprint 字符模式
    func Sprint(a ...interface{}) string
    
        str := fmt.Sprint("name: %s", "coco")
        // ->name: %stiger

    Scan

    Scan 方法的几种模式, 所有方法都返回 写入字节数(n)及错误(err)

    基础模式: [name] Scan 将输入值写入参数中

    读取模式: F[name] 从io.Reader 读取数据 例如: Fscan

    字符模式: S[name] 从字符串读取数据 例如: Sscan

    模板模式: [name]f 根据模板提取数据 例如: scanf

    换行模式: [name]ln 以换行符号做读取结束 例如: scanln

    Scan
    根据标准输入,提取数据
    func Scan(a ...interface{}) (n int, err error)
    
    
    
    var name string
    var age int
    
    // 这里参数需要传入指针类型,获取写入数据
    if _, err := fmt.Scan(&name, &age); err != nil{
        fmt.Println(err)
        return
    }
    
    fmt.Printf("name: $s, age: %d", name, age)
    
    
    
    // 终端输入 coco 24
    // 终端输出 name: coco, age: 24
    // 当出入参数数量达到时,跳出输入
    
    
    
    
    Fscan
    
    
    从io.Reader读取数据,并解析
    
    func Fscan(r io.Reader, a ...interface{}) (n int, err error)
    
    
    // target.js
    let name = "coco"
    
    
    // main.go
    
        var t string
        var n string
        file, _ := os.Open("./target.js")
        fmt.Fscan(file, &t, &n)
    
        // t, n -> let 0
        // 以空格作为分割, 当数据不符合类型定义时,返回该类型的默认值
    
    
    
    
    Scanf
    
    
    根据指定格式,提取标准输入数据
    func Scanf(format string, a ...interface{}) (n int, err error)
    
    
        var name string
        var age int
    
        fmt.Scanf("name: %s
    age: %d", &name, &age)
    
        fmt.Println(name,'
    ', age)
        
        
        /*
            终端输入:
                name: coco
                age: 24
        */
        
        /*
            终端输出:
                coco
                24
        */
        
        // 当输入不符合指定格式时,将返回错误,跳出输入
    
    
    
    Scanln
    
    
    以换行符结束输入
    func Scanln(a ...interface{}) (n int, err error)
    
        var name string
        var age int
    
        fmt.Scanln(&name, &age)
    
        /*
            终端输入:
                coco 24 
                [换行, 结束输入]
        */
        
        // name, age -> coco 24
  • 相关阅读:
    查找链表中是否有环linked-list-cycle
    reverse-integer
    AVL树之 Java的实现
    single-number
    Best Time to Buy and Sell Stock II
    maximun-depth-of-binary-tree
    minimun-depth-of-binary-tree
    剑指offer--矩阵中的路径
    grep的几个参数
    fsck和badlocks
  • 原文地址:https://www.cnblogs.com/tigerzhouv587/p/11491366.html
Copyright © 2011-2022 走看看