局部变量
可以使用var或者“冒号等号”,如下:
// 局部变量定义
var name = "jack"
age := 13
fmt.Println(name, age, addr)
age = 20 // 修改值时不需要用冒号
多个变量可以同时声明和赋值,例如:
// 多个变量可以同时声明和赋值
var a, b, c = 1, 2, 3
fmt.Println(a, b, c)
r, pai := 10, 3.1415926
fmt.Println(r, pai)
以上变量在声明时都没有加变量类型,采用自动推导的形式,go也提供带变量类型的声明,例如:
var price float64 = 99.99
fmt.Println(price)
变量名在前,类型在后,这和C++、java不同。
注意:变量在声明后,必须要使用,不然无法编译
全局变量
全局变量必须使用var来声明,不能使用“冒号等号”这种方式
// 全局变量
// addr:="beijing" // 错误的写法
// 全局变量必须使用var来声明
var addr = "beijing"
如果有多个全局变量,可以使用var小括号包裹,例如:
// 如果有多个全局变量,可以使用var小括号来同时定义
var (
x = 100
y = 100
z = 100
)
代码如下:
package main
import "fmt"
// 全局变量
// addr:="beijing" // 错误的写法
// 全局变量必须使用var来声明
var addr = "beijing"
// 如果有多个全局变量,可以使用var小括号来同时定义
var (
x = 100
y = 100
z = 100
)
func main() {
fmt.Println("hello world")
// 局部变量定义
var name = "jack"
age := 13
fmt.Println(name, age, addr)
age = 20 // 修改值时不需要用冒号
fmt.Println(x, y, z)
// 多个变量可以同时声明和赋值
var a, b, c = 1, 2, 3
fmt.Println(a, b, c)
r, pai := 10, 3.1415926
fmt.Println(r, pai)
}
变量强制转换
go某些时候需要强制转换变量类型,例如在使用算数平方根时,需要进行类型转换,如下:
/*
强制类型转换
*/
package main
import (
"fmt"
"math"
)
func main() {
var a int = 3
var b int = 4
//这里需要做强制类型转换
var len int = (int)(math.Sqrt(float64(a*a + b*b)))
fmt.Println("len = ", len)
}