变量学习
变量定义
package main
import(
"fmt"
)
func add(a int, b int) int {
var sum int
sum = a + b
return sum
}
func main() {
var c int
c = add(100, 200)
fmt.Println("add(100,200)=",c);
}
定义变量关键字:var
变量名称在前,变量类型在后,变量定义完之后都会有初值
不添加类型的时候,可以根据用户给出的数据类型去判别
格式化输出和C语言差不多
在函数体内省略var,可以用
:=
来代替,用于第一次使用变量定义在函数体外不可以省略var
作用域在包内部,没有全局变量的概念
int初值 | string初值 |
---|---|
0 | “” |
可以使用这样来定义多个变量:
var (
aa = 1
bb = "Hello World"
cc = true
)
内建变量类型(u:无符号)
- bool, string
- (u)int, (u)int8,(u)int16, (u)int32, (u)int64, (u)intpr指针
- byte, rune(go语言的char类型)
- float32, float64, complex64(实部和虚部64位), complex128(实部和虚部128位)
复数回顾:
验证欧拉公式:
func complex() {
c := 3 + 4i
fmt.Println(cmplx.Abs(c))
}
func euler() {
fmt.Println(cmplx.Pow(math.E, 11i * math.Pi) + 1)
}
func main() {
complex()
euler()
}
Result:
5
(0-2.2056021997384143e-15i)
或者
func euler() {
fmt.Println(cmplx.Exp(11i * math.Pi) + 1)
}
python实现欧拉公式:
import cmath
cmath.exp(1j * cmath.pi) + 1
强制类型转换
类型转换是强制的
func triangle() {
var a, b int = 3, 4
var c int
c = int(math.Sqrt(float64(a * a + b * b)))
fmt.Println(c)
}
常量与枚举
常量
const定义常量可以不定义类型,也可以定义类型
const数值可作为各种类型使用
func consts() {
const filename = "abc.txt"
const a, b = 3 ,4
var c int
c = int(math.Sqrt(a * a + b * b))
fmt.Println(filename, c)
}
枚举 特殊的常量
iota:表示这组const是自增值
func enums() {
const (
cpp = iota
_
python = 2
golang = 3
javascript
)
// b kb mb gb tb pb
const (
b = 1 << (10 * iota)
kb
mb
gb
tb
pb
)
fmt.Println(cpp, javascript, python, golang)
fmt.Println(b, kb, mb, gb, tb, pb)
}
变量定义要点
- 变量类型写在变量名之后
- 编译器可推测变量类型
- 没有char,只有rune
- 原生支持复数类型