变量声明:
- go中没有全局变量的概念,再函数外定义的变量的作用域是函数所属的package,且必须用关键字"var"进行定义,不可用":= "方式,而函数内可以用":="方式进行变量定义
- go中的变量在声明后会被默认赋上确定的初值
- go中声明的变量一定要使用,不然编译会报错
- 在函数中,首次声明变量并赋值可以用":=",之后再赋值时只能用"=",否则就是重复定义变量
- var a,b int
- var s1,s2 string = ''hello","world" 或 var s1,s2 = ''hello","world" var a, s = 5,"hi"
- var(
a ,b int
k bool
)
- func main() {
i := 3
i=4
}
内建变量类型:
- bool, string
- (u)int, (u)int8, (u)int16, (u)int32, (u)int64, uintptr(指针) 注: 默认的整型的长度根据系统位数决定,32位系统就是32位,64位系统就是64位,go中没有long,short 等整型
- byte,rune 注:rune是字符型,为了适应国际化的字符,rune是4字节32位的字符型
- float32, float64
- complex64, complex128 注: 复数类型 complex64指实部和虚部各为float32的复数
package main
import (
"math/cmplx"
"fmt"
)func main() {
a := 3 + 4i
b := cmplx.Abs(a)
fmt.Println(b)
}
验证欧拉公式:
c := cmplx.Pow(math.E, 1i*math.Pi)+1
或 d := cmplx.Exp(1i*math.Pi)+1
强制类型转换:
go语言的类型转换是强制的,即go语言中没有隐式类型转换
func triangle() {
var a, b int = 3, 4
var c int
c = math.Sqrt(a*a+b*b)
fmt.Println(c)
}此时,编译器会报错"cannot use a * a + b * b (type int) as type float64 in argument to math.Sqrt",因为math.Sqrt()的参数和返回结果都必须为float64,而我们声明的a,b,c为int,所以必须手动强制类型转换
func triangle() {
var a, b int = 3, 4
var c int
c = int(math.Sqrt(float64(a*a+b*b)))
fmt.Println(c)
}