定义变量
在Go语言中定义变量比较特别,var 变量名 变量类型
和其他语言相反.定义变量后都会有默认值,例如int类型默认为0,string默认为空.如下调用variable函数后打印结果为0.
通过
:=
定义变量必须在函数内.而var
可在函数内外定义标准格式
package main
import "fmt"
// 可在外部使用var标准格式定义
var hello string
func variable() {
// 定义变量及类型,不赋值
var sex int
// 定义变量,自动判断类型
var name = "QvBiLam"
// 定义多个不同类型的变量
var hobby, skill, phone, life = "Golang", "php", 1937, true
// 定义多个相同类型变量,赋值
var weight, height int = 175, 120
fmt.Println(life, sex, phone)
fmt.Println("Hello Myname is " + name)
fmt.Println("My hoby is" + hobby + "and my skill is " + skill)
fmt.Println("My weight is", weight, "My height is", height)
}
// main包下必须要有main方法
func main() {
variable()
}
// 执行go run test.go
简短格式
package main
import "fmt"
// 不可在外部使用简短格式定义变量
func variable() {
// 定义多个不同类型的变量,:=可以理解为相当于var.只能在声明的时候用
a,b,c := 1,2,3
// 变量重赋值
a = 4
fmt.Println(a,b,c)
}
// main包下必须要有main方法
func main() {
variable()
}
// 执行go run test.go
Go中定义的变量必须要使用到,不用会出现错误
// 修改variable方法
func variable() {
// 定义sex但不使用用
var sex int
}
fmt.Println(age, name)
// 执行go run test.go 出现如下错误
# command-line-arguments
./test.go:8:6: sex declared and not used
类型转换
只支持强制转换
根据勾股定理c*c = a*a + b*b
算斜边的长度
// 首选需要了解开平方函数传参.
// 传参为float64位
// 返回值float64
func Sqrt(x float64) float64
// Note: Sqrt is implemented in assembly on some systems.
// Others have assembly stubs that jump to func sqrt below.
// On systems where Sqrt is a single instruction, the compiler
// may turn a direct call into a direct use of that instruction instead.
示例
package main
import (
"fmt"
"math"
)
func variable() {
// 定义a,b 为int类型
var a, b int = 3, 4
// 定义c 为int类型
var c int
// 首先将(a,b)的结果转为float64.因为开始c已经定义为int
// 再将float64位的开平方结果转换成int类型
c = int(math.Sqrt(float64(a*a + b*b)))
fmt.Print(c)
}
// main包下必须要有main方法
func main() {
variable()
}
// 运行文件 go run test.go
常量定义
常量定义后无法修改,定义后可以不使用
类似于变量,可以在声明常量的时候指定数据类型,也可以不指定数据类型.
package main
import "fmt"
func myConst(){
// 定义单个变量
const A = 0
// 定义多个变量
const (
B = 1
C = 2
)
// 枚举自增变量
const (
// iota为自增1.当想获取2,4,6
// 下划线为忽略的值
_ = 2 * iota //从空开始
D
E
F
)
fmt.Println(A,B,C) // 输出0 1 2
fmt.Println(D,E,F,) // 输出2 4 6
}
// n
func main() {
myConst()
}
在没有定义数据类型在使用的时候会自动进行类型转换(个人理解,机制没去了解不是很懂).而定义了数据类型就需要进行强制转换.
package main
import "math"
func myConst() {
// 定义常量
const A, B = 3, 4
var c int
const NAME = "QvBiLam"
// 没有将AB的结果进行转换就可以直接当成float64的用
c = int(math.Sqrt(A*A + B*B))
print(c)
}
// main包下必须要有main方法
func main() {
myConst()
}