跳至主要內容

控制台

LincZero大约 2 分钟

控制台

核心:fmt包。详见 studygolang.com/pkgdoc

控制台输出 (打印)

格式化打印

fmt.Println("普通的带换行打印")

// 格式化打印
fmt.Printf("对应字符:%c", 'A')		 // A
fmt.Printf("对应字符:%T", 25)		 // int
fmt.Println(unsafe.Sizeof(num3))	// 8 (Byte)

格式化打印字符(详见 studygolang.com/pkgdoc中fmt 部分的文档)

// 通用
%v	值的默认格式表示
%+v	类似%v,但输出结构倜时会添加字段名
%#v	值的Go语法表示
%T	值的类型的Go语法表示
%%	百分号

// 布尔
%t	单词true/false

// 整数
%b	二进制
%c	unicode码值
%d	十进制
%o	八进制
%q	单引号括起来的go语法字符字面值,必要时用转义符号。即打印出来的结果是带引号的:"hello\tworld"
%x	十六进制(小写)
%X	十六进制(大写)
%U	Unicode码值(U+1234表示法)

// 浮点与复数
%b
%e
%E
%f
%F
%g
%G

// 字符串和[]byte
%s
%q
%x
%X

// 指针
%p	表示为0x加十六进制

转义字符

与其他语言基本一样的

转义符含义补充Unicode
\b退格backspace\u0008
\n换行\u000a
\r回车将光标指针返回本行的开头,后续输出会替换原有字符\u000d
\t制表符tab\u0009
\"双引号\u0022
\'单引号\u0027
\\反斜杠\u005c

控制台输入

fmt Scan函数

和打印一样同样是fmt库,里面的 Scanln 函数

原型

// 常用的两个:
// 这里的 `a ...interface{}` 类似与C++中的泛型函数
func Scan(format string, a ...interface{}) (n int, err error)	// 从str扫描文本,空白符分割
func Scanln(a ...interface{}) (n int, err error)				// 从str扫描文本,换行符分割

// 其他类似的:
func Sscanln
func Fscan														// 从r扫描文本
func Fscanln

使用 (Scanln)

package main
import "fmt"

func main() {
    var age int
    fmt.Println("录入年龄:")
    fmt.Scanln(&age)	    // 传入age地址,这里有点类似于字符串转数值类型的使用,也会有可能出错
    fmt.Printf("年龄:%v", age)
}

使用 (Scan)

package main
import "fmt"

func main() {
    var age int
    var name string
    var score float32
    var isVIP bool
    fmt.Println("录入年龄, 姓名, 成绩, 是否VIP, 空格分割")
    fmt.Scanf("%d %s %f %t", &age, &name, &score, &isVIP)
}