Go语法-基础结构

Go语法-基础结构


变量

简短变量声明语句中必须至少要声明一个新的变量

f, err := os.Open(infile)
// ...
f, err := os.Create(outfile) // compile error: no new vagriables

指针

同c语言差不多

x := 1
p := &x // p, of type *int, points to x
fmt.Println(*p) // "1"
*p = 2 // equivalent to x = 2
fmt.Println(x) // "2"

变量生命周期

逃逸的变量需要额外分配内存,同时对性能的优化可能会产生细微的影响。

逃逸可以是局部变量定义的值赋给包变量,当函数结束时局部变量并未被进行回收,也就是逃逸

类型

定义类型

type 类型名字 底层类型

type Celsius float64 // 摄氏温度
type Fahrenheit float64 // 华氏温度

定义不同的数据类型,因此它们不可以被相互比较或混在一个表达式运算,也避免了一些问题。比如华氏摄氏混算等。

对于每一个类型T,都有一个对应的类型转换操作T(x),用于将x转为T类型

func CToF(c Celsius) Fahrenheit { return Fahrenheit(c*9/5 + 32) }
func FToC(f Fahrenheit) Celsius { return Celsius((f - 32) * 5 / 9) }

Fahrenheit和Celsius不是函数,只是底层数据相同,所以可以相互转换。

下面的声明语句,Celsius类型的参数c出现在了函数名的前面,表示声明的是Celsius类型的一个叫名叫String的方法,该方法返回该类型对象c带着°C温度单位的字符串。应该是有点像java的方法重写

func (c Celsius) String() string { return fmt.Sprintf("%g°C", c) }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值