Go pointer & switch fallthrough
pointer
go语言不存在指针操作,只有2个符号: &取内存地址 *根据内存地址取值
应用
n := 18
// 取地址
fmt.Println(&n)
fmt.Println(*&n)
打印结果:
查询内存地址的类型
p := &n
// 根据地址取值
fmt.Printf("%T\n", p) // 打印结果是*int,即int类型的指针
m := *p
fmt.Println(m) //根据地址取值
打印结果:
我们发现打印的结果是:*int,即int类型的指针
nil pointer
var a1 *int //nil pointer
fmt.Println(a1) //<nil>
var a2 = new(int)
fmt.Println(a2) //内存地址 0xc000108010
fmt.Println(*a2) //0 根据内存地址取值 没有值返回0
*a2 = 100 //根据内存地址赋值
fmt.Println(*a2) //100
打印结果:
总结
- 对变量进行取地址操作(&),可以获得这个变量的指针变量
- 指针变量的值是指针地址(内存地址)
- 对指针变量进行取值操作(*),可以获得这个指针变量指向原变量的值,即通过内存地址取值。
switch
我们往往习惯于使用if判断,switch可以简化我们的if判断。
switch的作用和if是一样的,都是进行条件判断,引入switch的原因是能简化我们的if判断,让代码的可读性更强。
可读性更好
举个栗子:
if判断来判断手指的名称:
finger :=2
if finger==1 {
fmt.Println("大拇指")
}else if finger==2 {
fmt.Println("食指")
}else if finger==5 {
fmt.Println("小拇指")
}else {
fmt.Println("无效")
}
switch判断手指名称
finger := 2
switch finger {
case 1:
fmt.Println("大拇指")
case 2:
fmt.Println("食指")
case 5:
fmt.Println("小拇指")
default:
fmt.Println("无效")
}
对比之下立竿剪影:switch case 这种方式可读性更好。
case后支持多个参数
举个栗子:奇偶数判断
switch n := 3; n {
case 1, 3, 5, 7, 9:
fmt.Println("奇数")
case 2, 4, 6, 8, 10:
fmt.Println("偶数")
}
case后加判断
举个栗子:
age := 29
switch {
case age < 18:
fmt.Println("好好学习Z")
case age > 18 && age < 60:
fmt.Println("好好上班")
case age > 60:
fmt.Println("希望不用继续上班了,哈哈")
default:
fmt.Println(age)
}
注意:当在case后加判断时,switch后面不需要传入参数,否则会报错:类型不匹配。
fallthrough
使用建议
在一个 switch 块内,每个 case 无需声明 break 来终止 , 如果想顺序执行使用 fallthrough ;在一个switch块内,都必须包含一个 default 语句并且放在最后,即使它什么代码也没有。
package main
import "fmt"
func main() {
switch {
case false:
fmt.Println("false1")
fallthrough
case true:
fmt.Println("true1")
fallthrough
case false:
fmt.Println("false2")
fallthrough
case true:
fmt.Println("true2")
case false:
fmt.Println("false3")
fallthrough
default:
fmt.Println("default case")
}
}
总结
相信大家阅读完这篇文章对go语言中的指针有了更深刻的理解
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanfbbck
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01