常量

相对于变量,常量是恒定不变的值,比如:数学自然常数e,圆周率pi。常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。

Go语言中定义常量的关键字跟c语言一样const:

const e = 2.718281 const pi = 3.1415926 const filename = "demo.txt"

1

2

3

也可以集中定义:

const( e = 2.718281 pi = 3.1415926 )

1

2

3

4

常量使用跟变量一样:

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) }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

枚举

const能够用作枚举:

const ( Monday = 1 Tuesday = 2 Wednesday = 3 Thursday = 4 Friday = 5 )

1

2

3

4

5

6

7

iota

iota是一个特殊常量,可以认为是一个可以被编译器修改的常量,第一个 iota 等于0,后面的依次+1

const ( _ = iota Monday Tuesday Wednesday Thursday Friday ) fmt.Println(Monday, Tuesday, Wednesday, Thursday, Friday)

1

2

3

4

5

6

7

8

9

10

结果:

1 2 3 4 5

1

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)

1

2

3

4

5

6

7

8

9

10

11

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

1

2

3

4

数学运算

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) }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

同样,我们构建并运行这个程序:

cd mathDemo go build go run main.go

1

2

3

可以看到如下结果:

20 + 40 = 60 20 - 40 = -20 20 / 40 = 800.00 20 / 40 = 0.50

1

2

3

4

数学函数库

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) }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

Go菜鸟笔记:第三章 Go常量、枚举、数学运算

17

18

19

20

21

22

23

24

运算结果:

2.40^2 = 5.76 Sin(2.40) = 0.68 Cos(1.60) = -0.03 Sqrt(2.40*1.60) = 1.96

1

2

3

4

自增和自减

Go 提供了自增和自减的语法:

++ syntax for increment. a++ means a = a + 1 —- syntay for decrement. a—- means a = a - 1

1

2

创建一个文件夹 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) }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

输出结果:

a = 4 a + 1 = 5 a ++ = 6 a - 1 = 5 a -- = 4

1

2

3

4

5

获得键盘输入

在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) }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

结果

圆面积计算 输入一个半径值:2 半径为 2.00 的圆面积 = 12.57 Process finished with exit code 0

1

2

3

4

Go