Contents
1.1. 声明变量¶
Go语言作为C语言家族的新派代表,在C语言的定义方法和类型上做了优化和调整,更加灵活易学,Go语言的每一个变量都拥有自己的类型,必须声明才能开始用。
package main
var a1 int // 声明一个整数类型的变量
var b1 string // 声明一个字符串类型的变量
var c1 []float32 // 声明一个32位浮点类型的变量,浮点切片表示由多个浮点类型组成的数据结构
// 声明一个返回为布尔类型的函数变量,这种形式一般用于回调函数,即将函数以变量的形式保存下来。需要的时候重新调用这个函数
var d1 func() bool
var e1 struct{ // 声明一个结构体类型的变量,这个结构体拥有一个整型的x字段
x int
}
// 批量声明变量
var (
a int
b string
c []float32
d func() bool
e struct {
x int
}
)
1.1.1. 初始化变量¶
/**
每个变量初始化类型都有一个默认值:
1.整型和浮点型变量的默认值为0
2.字符串变量的默认值为空字符串
3.布尔型变量默认为bool
4.切片、函数、指针变量的默认为nil
*/
1.1.2. 标准格式¶
/**
var 变量名 类型 表达式
*/
var hp int = 100
1.1.3. 编译器自己推导类型的格式¶
编译器会尝试根据等号右边的表达式推导hu变量的类型
var hu = 200
var num1 = 30
var num2 = 20
var damageRate float32 = 0.17
var damage = float32(num1-num2) * damageRate
func main() {
fmt.Println(hu)
fmt.Println(damage) //输出结果:1.7
}
1.1.4. 短变量声明并初始化¶
hp :=100
// 省略var,注意:=左侧的变量不应该是已经声明过的,否则会导致编译错误。
/**
net.Dial是提供按照指定协议和地址发起网络连接,这个函数有两个返回值,一个是连接对象,一个是err对象。
*/
var conn net.Conn
var err error
conn, err := net.Dial("tcp", "127.0.0.1:8080")
conn1, err := net.Dial("tcp", "127.0.0.1:8080")
多个变量同时赋值¶
编程最简单的算法之一,莫过于变量交换。
package main
import "fmt"
var a int = 100
var b int = 200
func main() {
b, a = a, b
fmt.Println(a, b) //200 100
}
匿名变量-没有名字的变量¶
/**
匿名变量
匿名变量不占用命名空间,不会分配内存,匿名对象与匿名对象之间也不会因为多次声明而无法使用
*/
func GetData() (int, int) {
return 100, 200
}
func main() {
a, _ := GetData()
_, b := GetData()
fmt.Println(a, b) //100 200
}
1.1.5. 函数变量可见性¶
可见性:
1)声明在函数内部,是函数的本地值,类似private
2)声明在函数外部,是对当前包可见(包内所有.go文件都可见)的全局值,类似protect
3)声明在函数外部且首字母大写是所有包可见的全局值,类似public