第三章 Go常量、枚举、数学运算
2019-11-09 本文已影响0人
宇宙之一粟
常量
相对于变量,常量是恒定不变的值,比如:数学自然常数e,圆周率pi。常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。
Go语言中定义常量的关键字跟c语言一样const:
const e = 2.718281
const pi = 3.1415926
const filename = "demo.txt"
也可以集中定义:
const(
e = 2.718281
pi = 3.1415926
)
常量使用跟变量一样:
package main
import "fmt"
func main() {
const(
e = 2.718281
pi = 3.1415926
)
r := 2.0
area := pi * r * r
fmt.Println("圆的面积 = ", area)
fmt.Println("自然常数e = ", e)
}
枚举
const能够用作枚举:
const (
Monday = 1
Tuesday = 2
Wednesday = 3
Thursday = 4
Friday = 5
)
iota
iota是一个特殊常量,可以认为是一个可以被编译器修改的常量,第一个 iota 等于0,后面的依次+1
const (
_ = iota
Monday
Tuesday
Wednesday
Thursday
Friday
)
fmt.Println(Monday, Tuesday, Wednesday, Thursday, Friday)
结果:
1 2 3 4 5
左移运算
const (
i = 1 << iota
j = 3 << iota
k
l
)
fmt.Println("i = ", i)
fmt.Println("j = ", j)
fmt.Println("k = ", k)
fmt.Println("l = ", l)
- i = 1, iota初始为0 --> 左移0位,不变 i = 1
- j = 3, iota变为1,左移1位,3的二进制(011)--> 左移1位,变为6(二进制110)
- k = 3, iota变为2,左移2位,011 --> 1100(也就是12)
- l = 3, iota变为3,左移3位,011 --> 11000(也就是24)
i = 1
j = 6
k = 12
l = 24
数学运算
Go语言同样支持简单的数学四则运算:加、减、乘、除。为了测试,我们创建一个mathDemo文件夹,然后创建一个GO文件 main.go:
package main
import "fmt"
func main() {
// 变量声明
var a, b int
// 变量赋值
a = 20
b = 40
// 算数运算
// 加法
c := a + b
fmt.Printf("%d + %d = %d \n", a, b, c)
// 减法
d := a - b
fmt.Printf("%d - %d = %d \n", a, b, d)
// 乘法
e := float32(a) * float32(b)
fmt.Printf("%d / %d = %.2f \n", a, b, e)
// 除法
f := float32(a) / float32(b)
fmt.Printf("%d / %d = %.2f \n", a, b, f)
}
同样,我们构建并运行这个程序:
cd mathDemo
go build
go run main.go
可以看到如下结果:
20 + 40 = 60
20 - 40 = -20
20 / 40 = 800.00
20 / 40 = 0.50
数学函数库
Go提供了大量的数学函数库,创建一个文件夹 mathdemo,新建 main.go。写下如下的代码;
package main
import (
"fmt"
"math"
)
func main() {
a := 2.4
b := 1.6
c := math.Pow(a, 2)
fmt.Printf("%.2f^%d = %.2f \n", a, 2, c)
c = math.Sin(a)
fmt.Printf("Sin(%.2f) = %.2f \n", a, c)
c = math.Cos(b)
fmt.Printf("Cos(%.2f) = %.2f \n", b, c)
c = math.Sqrt(a * b)
fmt.Printf("Sqrt(%.2f*%.2f) = %.2f \n", a, b, c)
}
运算结果:
2.40^2 = 5.76
Sin(2.40) = 0.68
Cos(1.60) = -0.03
Sqrt(2.40*1.60) = 1.96
自增和自减
Go 提供了自增和自减的语法:
++ syntax for increment. a++ means a = a + 1
—- syntay for decrement. a—- means a = a - 1
创建一个文件夹 incdec,然后创建 main.go
package main
import "fmt"
func main() {
var a = 4
fmt.Printf("a = %d \n", a)
// 自增
a = a + 1
fmt.Printf("a + 1 = %d \n", a)
a++
fmt.Printf("a ++ = %d \n", a)
// 自减
a = a - 1
fmt.Printf("a - 1 = %d \n", a)
a--
fmt.Printf("a -- = %d \n", a)
}
输出结果:
a = 4
a + 1 = 5
a ++ = 6
a - 1 = 5
a -- = 4
获得键盘输入
在fmt库中,提供了一个从键盘获得输入的方法,Scanf()。
为了演示示例,计算圆的面积。在这个例子中,我们需要输入一个半径的值。
创建一个文件inputdemo,然后创建一个文件main.go,写入如下代码:
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println("圆面积计算")
fmt.Print("输入一个半径值:")
var radius float64
fmt.Scanf("%f", &radius)
area := math.Pi * math.Pow(radius, 2)
fmt.Printf("半径为 %.2f 的圆面积 = %.2f", radius, area)
}
结果
圆面积计算
输入一个半径值:2
半径为 2.00 的圆面积 = 12.57
Process finished with exit code 0