欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

1.7 标准输入与输出

程序员文章站 2022-04-09 21:41:38
...

输入输出概述

博彩游戏
该例演示了标准输入的用法

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    fmt.Println("亲请输入**金额和**球队:")

    var money int
    var team string
    fmt.Scanf("%d+%s", &money, &team)
    fmt.Printf("您**了%s%d万元,人生巅峰即将开始...\n",team,money)
    time.Sleep(1 * time.Second)

    //time.Now().Unix()获取当前时间距离1970年零时逝去的秒数
    //rand.NewSource(time.Now().Unix())每秒更新一个随机数的种子,一旦种子变化随机数也随之变化
    myrand := rand.New(rand.NewSource(time.Now().Unix()))

    //获得[0-100)的随机数
    luckyNumber := myrand.Intn(100)
    fmt.Println("luckyNumber=", luckyNumber)

    if luckyNumber > 10 {
        fmt.Println("靠海别野欢迎你")
    } else {
        fmt.Println("天台欢迎你")
    }

}

格式化打印
该例演示了标准输出的用法

func main() {

    type cat struct{
        name string
        lives int
    }
    c := cat{"Coding喵",1}

    /*
    ·几乎所有占位符都可以前置宽度和左右对齐:10%s代表10宽度右对齐,-10%s代表10宽度左对齐
    ·输出中带有小数位的,都可以指定其精度:.2%e
    */

    //通用占位符
    fmt.Println("-----通用占位符-----")
    fmt.Printf("%v\n",c)//{Coding喵 1}
    fmt.Printf("%+v\n",c)//{name:Coding喵 lives:1}
    fmt.Printf("%#v\n",c)//main.cat{name:"Coding喵", lives:1}
    fmt.Printf("%T\n",c)//main.cat
    fmt.Printf("%f%%\n",12.34)//12.340000%

    //基本类型占位符
    fmt.Println("-----基本类型占位符-----")
    fmt.Printf("%d\n",123)//123,整型(decimal)
    fmt.Printf("%f\n",123.45)//123.450000,浮点型(float)
    fmt.Printf("%t\n",false)//false,布尔类型(true)
    fmt.Printf("%s\n","hello")//hello,字符串类型(string)
    fmt.Printf("%q\n","hello")//"hello",带引号字符串类型(quotation)
    fmt.Printf("%p\n",&c)//0xc04205c3e0,指针类型(pointer)

    //进制占位符
    fmt.Println("-----进制占位符-----")
    fmt.Printf("%b\n",123)//1111011,二进制(binary)
    fmt.Printf("%o\n",123)//173,八进制进制(octal)
    fmt.Printf("%d\n",123)//123,十进制(decimal)
    fmt.Printf("%x\n",123)//7b,十六进制小写(hex)
    fmt.Printf("%X\n",123)//7B,十进制大写(hex)

    //科学计数法
    fmt.Println("-----科学计数法-----")
    fmt.Printf("%e\n",123456789012345.0)//1.234568e+14
    fmt.Printf("%e\n",0.00000000012345)//1.234500e-10
    fmt.Printf("%E\n",123456789012345.0)//1.234568E+14
    fmt.Printf("%E\n",0.00000000012345)//1.234500E-10
    fmt.Printf("%g\n",12345.0)//12345 智能选择【常规浮点数】或【科学计数法】显示
    fmt.Printf("%g\n",123456789012345.0)//1.23456789012345e+14
    fmt.Printf("%G\n",12345.0)//12345
    fmt.Printf("%G\n",0.0000000012345)//1.2345E-09

    //字符集占位符
    fmt.Println("-----科学计数法-----")
    fmt.Printf("%c\n",123)//{ Unicode字符的【字符形式】
    fmt.Printf("%U\n",123)//U+007B Unicode字符的【十六进制序号形式】
    fmt.Printf("%c\n",'{')//{ Unicode字符的【字符形式】
    fmt.Printf("%U\n",'{')//U+007B Unicode字符的【字符形式】

    //设置输出的宽度和对齐方式
    fmt.Println("-----宽度和对齐-----")
    fmt.Printf("%20v\n",c)
    fmt.Printf("%20d\n",123)
    fmt.Printf("%20b\n",123)
    fmt.Printf("%20e\n",123456789012345.0)
    fmt.Printf("%20c\n",123)
    fmt.Printf("%-20v\n",c)
    fmt.Printf("%-20d\n",123)
    fmt.Printf("%-20b\n",123)
    fmt.Printf("%-20e\n",123456789012345.0)
    fmt.Printf("%-20c\n",123)

    //设置输出的小数精度
    fmt.Println("-----小数精度-----")
    fmt.Printf("%.2f%%\n",12.34)//12.340000%
    fmt.Printf("%.2f\n",123.45)
    fmt.Printf("%.2e\n",123456789012345.0)//1.234568e+14
    fmt.Printf("%.2e\n",0.00000000012345)//1.234500e-10
    fmt.Printf("%.2E\n",123456789012345.0)//1.234568E+14
    fmt.Printf("%.2E\n",0.00000000012345)//1.234500E-10

    //g/G的精度代表数字的总位数
    fmt.Printf("%.3g\n",12345.0)//12345 智能选择【常规浮点数】或【科学计数法】显示
    fmt.Printf("%.3g\n",123456789012345.0)//1.23456789012345e+14
    fmt.Printf("%.3G\n",12345.0)//12345
    fmt.Printf("%.3G\n",0.0000000012345)//1.2345E-09
}

fmt的Sprint系列函数将预期输出转换为字符串
但并不真的输出出来

func main() {

    //打印:造一个字符串,并输出到控制台
    /*  fmt.Print("abc")
        fmt.Println("abc")
        fmt.Printf("abc%d\n",123)*/

    //sprint:造一个字符串,返回之
    //fmt.Print(123, 456.78, "你妹", [3]int{6, 6, 6})
    mstr := fmt.Sprint(123, 456.78, "你妹", [3]int{6, 6, 6})

    //结果尾部包含一个\n
    mstr = fmt.Sprintln("abc")
    mstr = fmt.Sprintf("当一只猪拥有%.2e%s时,它就不再是一只猪,而是%s\n",1234567890.0,"BTC","大帅比")

    fmt.Print(mstr)
}
相关标签: 标准输入与输出