\0,直接输出的内存数据转换为字符串就刚好对应“烫烫烫”和“屯屯屯”。
var 变量名 类型 = 表达式
例如,游戏中,玩家的血量初始值为100。可以这样写:var hp int = 100这句代码中,hp 为变量名,类型为 int,hp 的初始值为 100。
var hp = 100等号右边的部分在编译原理里被称做右值(rvalue)。
var attack = 40 var defence = 20 var damageRate float32 = 0.17 var damage = float32(attack-defence) * damageRate fmt.Println(damage)代码说明如下:
提示:damage 变量的右值是一个复杂的表达式,整个过程既有 attack 和 defence 的运算还有强制类型转换。强制类型转换会在后面的章节中介绍。
3.4
hp := 100这是Go语言的推导声明写法,编译器会自动根据右值类型推断出左值的对应类型。
如果 hp 已经被声明过,但依然使用注意:由于使用了
:=,而不是赋值的=,因此推导声明写法的左值变量必须是没有定义过的变量。若定义过,将会发生编译错误。
:=时编译器会报错,代码如下:
// 声明 hp 变量 var hp int // 再次声明并赋值 hp := 10编译报错如下:
no new variables on left side of :=
意思是,在“:=”的左边没有新变量出现,意思就是“:=”的左边变量已经被声明了。
conn, err := net.Dial("tcp","127.0.0.1:8080")
net.Dial 提供按指定协议和地址发起网络连接,这个函数有两个返回值,一个是连接对象(conn),一个是错误对象(err)。如果是标准格式将会变成:
var conn net.Conn
var err error
conn, err = net.Dial("tcp", "127.0.0.1:8080")
因此,短变量声明并初始化的格式在开发中使用比较普遍。
conn, err := net.Dial("tcp", "127.0.0.1:8080")
conn2, err := net.Dial("tcp", "127.0.0.1:8080")
上面的代码片段,编译器不会报 err 重复定义。
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有