使用var关键字
var a,b,c bool
var s1,s2 string = “Hello World”
可放在函数内,或直接放在包内
使用var()集中定义变量
让编译器自动决定类型
使用:=定义变量
hello.go
package main
import "fmt"
//在函数外定义变量
var aa int = 10
var bb string = "小米"
var cc bool = true
func variableZeroValue() {
// 定义变量
var a int
var b string
var c bool
fmt.Println(a, b, c)
}
func variableInitialValue() {
//定义变量并赋值
var a, b int = 3, 4
var c string = "abc"
var d bool = true
//短变量赋值
e := 15
fmt.Println(a, b, c, d, e)
}
func variableTypeDeduction() {
var a, b, c, d = 3, 5, true, "您好"
fmt.Println(a, b, c, d)
}
//常用定义变量方法
func variableTypeShort() {
var a, b, c, d = 3, 5, true, "您好"
b = 5
fmt.Println(a, b, c, d)
}
func main() {
fmt.Println("Hello world")
variableZeroValue()
variableInitialValue()
variableTypeDeduction()
variableTypeShort()
fmt.Println(aa, bb, cc)
}
验证欧拉公式
func euler() {
c := 3 + 4i
fmt.Println(cmplx.Abs(c))
fmt.Println(cmplx.Pow(math.E, 1i*math.Pi) + 1) //方法1
fmt.Println(cmplx.Exp(1i*math.Pi) + 1) //方法2
fmt.Printf("%.3f\n", cmplx.Exp(1i*math.Pi)+1) //方法2
}
func main() {
euler()
}
类型转换是强制的
func triangle() {
var a, b int = 3, 4
var c int
//需要先将int类型转换为float64类型,然后在把float64转为int类型
c = int(math.Sqrt(float64(a*a + b*b)))
fmt.Println(c)
}
func main() {
triangle()
}
const filename = "abc.txt"
const数值可作为各种类型使用
const a,b = 3,4
var c int = int(math.Sqrt(a*a + b*b))
示例
package main
import (
"fmt"
"math"
)
func costs() {
//第一种写法
//const filename = "abc.txt"
//const a, b = 3, 4
//第二种写法,可以节省代码量
const (
filename = "abc.txt"
a, b = 3, 4
)
var c int
c = int(math.Sqrt(a*a + b*b))
fmt.Println(filename, c)
}
func main() {
costs()
}
package main
import (
"fmt"
"math"
)
func enums() {
const (
//java = 0
//php = 1
//javaScripts = 2
//python = 3
//iota表示自增值
java = iota
php
javaScripts
python
)
const (
//iota还可以参与运算
// b , kb , mb, gb , tb , pb
b = 1 << (10 * iota)
kb
mb
gb
tb
pb
)
fmt.Println(java, php, javaScripts, python)
fmt.Println(b, kb, mb, gb, tb, pb)
}
func main() {
enums()
}
变量类型写在变量名之后
编译器可推测变量的类型
没有chart,只有rune
原生支持复数类型