以下笔记摘录自『 The Go Workshop 』。
我们时常呼叫某个函式,但只会拿函式的回传值来检查它是否正确执行,之後就再也不需要这个值了。比方说写入档案、将资料存入资料库等等,只是想确认动作执行完毕後有没有发生问题。
这种情况下,函式传回的变数後面就用不到了,但只要你接收它,那这些资料就会存在其作用范围内,等於是多占了一份记忆体。为了避免放费,可以把变数的作用范围限制在if叙述范围,这样只要离开if叙述,该变数就会消灭。
If <起始赋值叙述>; <布林值运算式> {
<程序区块>
}
注意Go语言只允许在<起始赋值叙述>使用以下简单的叙述:
i := 0
i :=(j * 10) == 40
i++
最常犯得错误就是企图在起始赋值叙述用var定义变数,这是不允许的,只能在这里使用短变数宣告。
For example,
package main
import (
"errors"
"fmt"
)
func validate(input int) error {
if input < 0 {
return errors.New("输入值不得为负")
} else if input > 100 {
return errors.New("输入值不得超过 100")
} else if input%7 == 0 {
return errors.New("输入值不得为 7 的倍数")
} else {
return nil
}
}
func main() {
input := 21
if err := validate(input); err != nil {
fmt.Println(err)
} else if input%2 == 0 {
fmt.Println(input, "是偶数")
} else {
fmt.Println(input, "是奇数")
}
}
//output
输入值不得为 7 的倍数
使用起始赋值叙述定义一个变数err,并对他赋值,然後将这个变数拿来用在if叙述的布林值运算中,只要main()的if...else if...else完成任务後,err变数就会离开作用范围,被Go语言的记忆体管理系统回收。
tags: 2021铁人赛 React 使用 Creat react app 对於React的初学者...
续上篇,Day 16 读 Go Concurrency Patterns - Rob Pike II...
监控 今天来介绍监控的四个黄金讯号、如何简化以及如何维护。 四个黄金讯号 延迟 流量 错误 饱和度 ...
前言 前面介绍完型别注解和型别推论,今天要和大家来谈 TypeScript 有哪些类型的型别,在这些...
今天心情蛮好的,期待叻2周终於等到这天了,生平第一次染发:) 这篇文有一半是我边染发变打出来的~ 染...