package main
//引入fmt库
import (
"fmt"
"math"
"math/cmplx"
)
func variableZeroValue() {
//定义变量
var id int
var name string
fmt.Printf("%d %q\n", id, name)
//fmt.Println(id, name)
}
func main() {
//fmt.Println("Hello,world")
//variableZeroValue()
//定义初值
//variableInitialValue()
//可以不定义类型
//variableTypeduction()
//省略var 定义变量 包内作用域
//variableShorter()
//fmt.Println(speak, read, shop)
euler()
ola()
ola1()
ola2()
tylargen()
}
//定义初值
func variableInitialValue() {
//在go中定义变量一定要使用
//字符串必须是双引号
var id, age int = 1, 39
var name string = "hsky"
fmt.Println(id, age)
fmt.Printf("%q", name)
}
//可以不定义类型 如果定义了类型就必须遵守
func variableTypeduction() {
var name, age, sex, status = "hsky", 28, "男", true
fmt.Println(name, age, sex, status)
}
//省略var的写法
func variableShorter() {
//:定义变量 第一次使用变量使用 : 编译 第二次则不用 其他变量第一次则需要使用
name, age, status := "hsky", 28, true
sex := 11111
age = 22
fmt.Println(name, age, status, sex)
}
//在方法外必须使用var / func定义 不可使用:
var (
speak string = "l say hello\n"
read string = "l like read\n"
shop string = "l like go to shop\n"
)
//欧拉公式实现 E的1i Pi次方+1等于0
func euler() {
//num := 3 + 4i
//取模函数 cmplx.Abs
//fmt.Println(cmplx.Abs(num))
//注意i会识别成变量了 所以需要用1i区分变量 识别为虚数
fmt.Println(cmplx.Pow(math.E, math.Pi * 1i) + 1)
}
func demo() {
name, age, sex := "张三", "10", "男"
fmt.Println(name, age, sex)
}
var (
name, age = "李维斯", 11
)
func ola() {
//e的i pi次方+1 = 0
fmt.Println(cmplx.Pow(math.E , math.Pi * 1i ) + 1)
}
func ola1() {
//省去设定底数E
fmt.Println(cmplx.Exp(math.Pi * 1i) + 1)
}
//浮点取整可以用fmt.Printf("%.1f|2f|3f\n",cmplx.Exp(math.Pi * 1i) + 1 ) = 0.0
func ola2() {
fmt.Printf("%.1f\n", cmplx.Exp( math.Pi * 1i)+1)
}
//Go的类型转换必须是强制的
func tylargen() {
var a, b int = 3, 4
var c int
//math.Sqrt必须为float64 所以这里必须强制转换
//c定义类型为int 所以也必须强制转换类型为int
c = int(math.Sqrt(float64(a*a + b*b)))
fmt.Println(c)
}
总结:复数的实部虚部都为float类型 complex64的实部虚部都为float32 complex128的实部虚部都为float64
fmt.Println(); 打印函数
欧拉公式为:e的i pi次方 + 1 = 0
emplx.Abs(3+ 4i) = 5 取模函数 (绝对值)
explx.Pow(math.E, math.Pi * 1i) 计算公式函数 虚定义底数结果跟下面一样 (0+1.2246467991473515e-16i)
emplx.Exp() 默认底数为E计算 fmt.Println(exmplx.Exp(math.Pi * 1i)+1 ) 值为浮点型 (0+1.2246467991473515e-16i)
fmt.Printf("%.2f", emplx.Exp()); 取前三位 值为 (0.0+0.0i)
math.Sqrt();
Go的类型必须强制转换!!!