英文:
In golang how to test a map or channel is uninitialized
问题
如何测试m和c是否未初始化(使用make)?
你可以使用以下方法来测试m和c是否已经通过make进行了初始化:
-
对于map类型的变量m,可以使用len函数来检查其长度。如果m未初始化,len(m)将返回0。
示例代码:
if len(m) == 0 { // m未初始化 } else { // m已初始化 }
-
对于channel类型的变量c,可以使用reflect包中的ValueOf函数来检查其是否为零值。如果c未初始化,其值将为nil。
示例代码:
import "reflect" if reflect.ValueOf(c).IsNil() { // c未初始化 } else { // c已初始化 }
请注意,以上方法仅适用于使用make进行初始化的map和channel类型变量。如果你使用其他方式进行初始化,可能需要使用不同的方法来进行检查。
英文:
var m map[int]int
var c chan int
How to test if m and c is uninitialized with make
答案1
得分: 3
你可以使用nil
来比较值,以查看它们是否已初始化。例如:
var m map[int]int
var c chan int
fmt.Println("m 是否未初始化:", m == nil) // true
fmt.Println("c 是否未初始化:", c == nil) // true
m = make(map[int]int)
c = make(chan int)
fmt.Println("m 是否未初始化:", m == nil) // false
fmt.Println("c 是否未初始化:", c == nil) // false
playground 示例代码 - https://play.golang.org/p/FzhygumF4v
英文:
You can compare the values with nil
to see if they're initialized. For example:
var m map[int]int
var c chan int
fmt.Println("is m uninitialized:", m == nil) // true
fmt.Println("is c uninitialized:", c == nil) // true
m = make(map[int]int)
c = make(chan int)
fmt.Println("is m uninitialized:", m == nil) // false
fmt.Println("is c uninitialized:", c == nil) // false
playground example code - https://play.golang.org/p/FzhygumF4v
答案2
得分: 1
如果 m == nil 或者 c == nil {
wtf();
}
英文:
if m == nil || c == nil {
wtf();
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论