让用户输入数据,完成项目交互。

//例子
package main

import "fmt"

func main() {
	var name string
	fmt.Print("请输入用户名:")
	fmt.Scan(&name) //当使用Scan时,会提示用户输入
	fmt.Printf(name)
}

//执行效果如下
GOROOT=/usr/local/go #gosetup
GOPATH=/Users/wang/GolangProjects #gosetup
/usr/local/go/bin/go build -o /private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go /Users/wang/GolangProjects/src/awesomeProject2/main.go #gosetup
/private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go #gosetup
请输入用户名:na  
na
Process finished with exit code 0
package main

import "fmt"

func main() {
	var name string
	var age int
	fmt.Println("请输入用户名:") //用户输完之后会得到两个值:count,用户输入了几个值;err,用户输入错误则是错误信息
	count,err := fmt.Scan(&name,&age)
	fmt.Println(count,err)
	fmt.Println(name,age)
}

//
GOROOT=/usr/local/go #gosetup
GOPATH=/Users/wang/GolangProjects #gosetup
/usr/local/go/bin/go build -o /private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go /Users/wang/GolangProjects/src/awesomeProject2/main.go #gosetup
/private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go #gosetup
请输入用户名:
wang 26
2 <nil>
wang 26

Process finished with exit code 0

//执行效果
GOROOT=/usr/local/go #gosetup
GOPATH=/Users/wang/GolangProjects #gosetup
/usr/local/go/bin/go build -o /private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go /Users/wang/GolangProjects/src/awesomeProject2/main.go #gosetup
/private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go #gosetup
请输入用户名:
wang 26
2 <nil>
wang 26

Process finished with exit code 0

package main

import "fmt"

func main() {
	var name string
	var age int
	fmt.Println("请输入用户名:")
	count,err := fmt.Scan(&name,&age)
	fmt.Println(count,err)
	fmt.Println(name,age)
}

GOROOT=/usr/local/go #gosetup
GOPATH=/Users/wang/GolangProjects #gosetup
/usr/local/go/bin/go build -o /private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go /Users/wang/GolangProjects/src/awesomeProject2/main.go #gosetup
/private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go #gosetup
请输入用户名:
wang kk
1 expected integer //错误信息
wang 0

Process finished with exit code 0
package main

import "fmt"

func main() {
	var name string
	var age int
	fmt.Println("请输入用户名:")
	_, err := fmt.Scan(&name, &age)
	if err != nil { //如果有错误
		fmt.Println("用户输入数据错误",err)
	} else { //否则没有错误的话
		fmt.Println(name, age)
	}
}

//执行正确效果
GOROOT=/usr/local/go #gosetup
GOPATH=/Users/wang/GolangProjects #gosetup
/usr/local/go/bin/go build -o /private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go /Users/wang/GolangProjects/src/awesomeProject2/main.go #gosetup
/private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go #gosetup
请输入用户名:
wang 18
wang 18

Process finished with exit code 0

//执行错误效果
GOROOT=/usr/local/go #gosetup
GOPATH=/Users/wang/GolangProjects #gosetup
/usr/local/go/bin/go build -o /private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go /Users/wang/GolangProjects/src/awesomeProject2/main.go #gosetup
/private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go #gosetup
请输入用户名:
wang kk
用户输入数据错误 expected integer

Process finished with exit code 0

Scan如果要求输入2个值,没输入完的话就会一直等待。Scanln等待回车。

package main

import "fmt"

func main() {
	var name string
	fmt.Print("请输入用户名: ")
	fmt.Scanf("%s", &name) //第一个写占位符
	fmt.Println(name)
}

//执行效果
GOROOT=/usr/local/go #gosetup
GOPATH=/Users/wang/GolangProjects #gosetup
/usr/local/go/bin/go build -o /private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go /Users/wang/GolangProjects/src/awesomeProject2/main.go #gosetup
/private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go #gosetup
请输入用户名: wang
wang

Process finished with exit code 0

package main

import "fmt"

func main() {
	var name string
	fmt.Print("请输入用户名: ")
	fmt.Scanf("我叫%s", &name)
	fmt.Println(name)
}

//执行效果
GOROOT=/usr/local/go #gosetup
GOPATH=/Users/wang/GolangProjects #gosetup
/usr/local/go/bin/go build -o /private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go /Users/wang/GolangProjects/src/awesomeProject2/main.go #gosetup
/private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go #gosetup
请输入用户名: 我叫wang
wang

Process finished with exit code 0
package main

import "fmt"

func main() {
	var name string
	fmt.Print("请输入用户名: ")
	fmt.Scanf("myNameIs%smyAgeIs18", &name)
	fmt.Println(name)
}
//执行效果
GOROOT=/usr/local/go #gosetup
GOPATH=/Users/wang/GolangProjects #gosetup
/usr/local/go/bin/go build -o /private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go /Users/wang/GolangProjects/src/awesomeProject2/main.go #gosetup
/private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go #gosetup
请输入用户名: myNameIswangmyAgeIs18
wangmyAgeIs18 //%把后面内容也匹配了。加上空格可不做匹配。

Process finished with exit code 0
package main

import "fmt"

func main() {
	var name string
	var age int
	fmt.Print("请输入用户名: ")
	fmt.Scanf("myNameIs%s myAgeIs%d 岁", &name,&age)
	fmt.Println(name,age)
}
//执行效果
GOROOT=/usr/local/go #gosetup
GOPATH=/Users/wang/GolangProjects #gosetup
/usr/local/go/bin/go build -o /private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go /Users/wang/GolangProjects/src/awesomeProject2/main.go #gosetup
/private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go #gosetup
请输入用户名: myNameIswang myAgeIs26 岁 //提取2个值
wang 26

Process finished with exit code 0
package main

import "fmt"

func main() {
	var  message string
	fmt.Print("请输入信息: ")
	fmt.Scanln(&message)
	fmt.Println(message)

//执行效果
GOROOT=/usr/local/go #gosetup
GOPATH=/Users/wang/GolangProjects #gosetup
/usr/local/go/bin/go build -o /private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go /Users/wang/GolangProjects/src/awesomeProject2/main.go #gosetup
/private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go #gosetup
请输入信息: 我就去睡觉啦 哇安   //带空格后面没显示
我就去睡觉啦
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	//line,从stdin中读取一行的数据(字节集合-->转化为字符串)
	//reader默认一次能读取4096个字节
	line, _, _ := reader.ReadLine()
	data := string(line)
	fmt.Println(data)
}

//执行效果
GOROOT=/usr/local/go #gosetup
GOPATH=/Users/wang/GolangProjects #gosetup
/usr/local/go/bin/go build -o /private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go /Users/wang/GolangProjects/src/awesomeProject2/main.go #gosetup
/private/var/folders/xb/kpzbs3093glfj2sg30q976cc0000gp/T/___go_build_main_go #gosetup
sjsj sjsjjsjalla  //读取一整行
sjsj sjsjjsjalla

Process finished with exit code 0
Categories: go

0 Comments

发表评论

Avatar placeholder

邮箱地址不会被公开。 必填项已用*标注