Go 数学运算

简介: Go 数学运算

常量

相对于变量,常量是恒定不变的值,比如:数学自然常数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)
  1. i = 1, iota初始为0 --> 左移0位,不变 i = 1
  2. j = 3, iota变为1,左移1位,3的二进制(011)–> 左移1位,变为6(二进制110)
  3. k = 3, iota变为2,左移2位,011 --> 1100(也就是12)
  4. 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

image.png


相关文章
|
6月前
|
Go
Go语言数学运算大揭秘:高精度计算实战
Go语言数学运算大揭秘:高精度计算实战
113 0
|
5月前
|
Go
go算数运算、关系运算、布尔运算、位运算
go算数运算、关系运算、布尔运算、位运算
|
BI Go
Go语言复数完全攻略 复杂运算不再难!
Go语言复数完全攻略 复杂运算不再难!
267 0
|
存储 算法 安全
Go运算操作符全解与实战:编写更高效的代码!2
Go运算操作符全解与实战:编写更高效的代码!2
92 0
|
算法 网络协议 测试技术
Go运算操作符全解与实战:编写更高效的代码!1
Go运算操作符全解与实战:编写更高效的代码!
104 0
|
SQL 算法 Java
【Go语言刷题篇】Go从0到入门3:逻辑运算、位运算、数组入门、切片入门练习
本期是Golang的逻辑运算、位运算、数组入门、切片入门的专项练习,有不懂的地方可以评论讨论~
【Go语言刷题篇】Go从0到入门3:逻辑运算、位运算、数组入门、切片入门练习
|
SQL 算法 Java
【Go语言刷题篇】Go从0到入门2:类型转换、字符求和、运算符运算(加减乘除取余比较符)练习
本系列文章采用牛客的核心代码模式进行案例代码提供,帮助大家从0到入门的学习过程中进行配套的刷题~
【Go语言刷题篇】Go从0到入门2:类型转换、字符求和、运算符运算(加减乘除取余比较符)练习
【GO】数学运算
【GO】数学运算
103 0
【GO】数学运算
|
存储 程序员 编译器
Go+赋值运算、字符串、切片
赋值运算符就是可以直接进行赋值的一种运算符
198 0