fmt.Print:
属于标准输出流,一般使用它来进行屏幕输出,但它不能换行
fmt.Printf:
可以格式化输出,输出不换行
fmt.Println:
输出后换行
fmt.Sprint:
返回一个格式化的字符串
Println()/Print():
标准错误出,控制台会以红色字体输出
a, b, c := 1, 2, 3
fmt.Print(a, b, c, "\n") // \n代表换行
fmt.Println(a, b, c)
fmt.Printf("a = %d , b = %d , c = %d ", a, b, c)
Scanf():需要指定接收的类型
fmt.Scanf("数据类型",&变量)
演示:
func main() {
var age int
fmt.Println("请输入您的年龄")
fmt.Scanf("%d", &age) // &取地址符
fmt.Println("age = ", age)
}
Scan():不需要指定接收的类型
fmt.Scan(&变量)
演示:
func main() {
var (
name string
age byte
)
fmt.Println("请输入您的姓名")
fmt.Scan(&name)
fmt.Println("请输入您的年龄")
fmt.Scan(&age)
fmt.Println("您的年龄是:", age, "\n", "您的姓名是:", name)
}
键盘输入数字后,计算圆的面积和周长
func main() {
// 定义π
const π = 3.14
// 键盘录入并使用变量接收
fmt.Println("请输入半径")
var r float64
fmt.Scan(&r)
// 计算面积与周长
area := π * r * r
p := 2 * π * r
fmt.Printf("面积是%.3f\n", area)
fmt.Printf("周长是%.3f\n", p)
}
随机数:
rand.Intn(n int)
是 Go 语言 math/rand
包中的函数,它返回一个0~n范围内的伪随机整数。其中,n
表示返回的随机整数的上限(不包含 n
)。
在Go语言中,生成随机数的算法是伪随机数算法,也就是说它不是真正意义上的随机数。伪随机数是通过一个确定的算法生成的,如果不做特殊处理,每次生成的数都是一样的。
func main() {
rand.Seed(10) // 设置随机数种子为固定值42
for i := 0; i < 5; i++ {
fmt.Println(rand.Intn(100))
}
}
输出:不管运行几次随机数都是一样的
54
48
67
39
28
为了生成不同的随机数序列,需要设置一个种子(Seed),Seed可以是任意数值,但需要保证每次使用的Seed都不同,通常可以使用时间戳作为Seed。
func main() {
rand.Seed(time.Now().UnixNano())
for i := 0; i < 5; i++ {
fmt.Println(rand.Intn(100))
}
}
crypto/rand
包实现了用于加解密的更安全的随机数生成器。
func main() {
// 生成一个包含10个字节的切片
b := make([]byte, 10)
if _, err := rand.Read(b); err != nil {
panic(err)
}
fmt.Println(b)
}