go语言学习心得

目的

在新单位工作已经快1年,这边使用了go语言作为主要的开发语言。在这里记录在工作中使用该语言遇到的问题、心得,避免以后再踩坑。

 

各种例子

 

1、从一个map对象中根据key获取值。其中map的通用类型可以定义为:map[string]interface{}

前提条件存在一个上述类型的map定义

var m map[string]interface{} = make(map[string]interface{})

 

可以有两种方式来获取对象

(1). 方法一

value, ok := m[key]

 

(2). 方法二

value := m[key]

 

问题:value的类型为interface{},可以为值类型或指针类型,如果给定的key在map中不存在,对于不同value类型的结果会是怎样的?

 

(1). 如果是值类型,如果给定的key不存在,从map获取值后,value的值为

string类型,value为空串

数值类型,value为0

结构体类型,value为结构体的默认值,结构体中包含的每一种类型的值参考上述规则

 

(2). 如果是指针类型,如果给定的key不存在,从map获取值后,value的值为 nil

 

2、对于一个为nil的map的遍历是否会报错?

比如如下代码:

 

运行的结果是:

(1). 遍历不会抱错,也不会执行print操作

(2). len(m) 长度为0

结论:对一个nil对象的go语言的原生态操作,比如range, len 等都不会抱错

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值