一道小红书的笔试题

今天下午笔试了小红书的一道题,不太能理解这道题的逻辑,请各位大佬帮忙解答一下最后的运行结果。😥
type MyError string

func (e *MyError) Error() string {
	return string(*e)
}

var Errisbad = MyError("errisbad")

func isbad() bool {
	return false
}

func checkErr() error {
	var pst *MyError = nil

	if isbad() {
		pst = &Errisbad
	}
	return pst
}
func main()  {
	err := checkErr()
	if err != nil {
		fmt.Println("non-nil")
		return
	}
	fmt.Println("nil")
}


#小红书校招##go语言##小红书笔试难度一般,你做的怎么样#
全部评论
注意checkErr()的返回值error是接口类型 如果把一个带有类型的 nil 赋值给接口时 error = (*MyError)nil,在接口的底层实现中只有 data 为 nil,而 type不为nil,因此,返回值与 nil 判断将不相等。
3 回复 分享
发布于 2022-09-05 16:48 湖南
只会c++,选择题好多瞎选的😂编程3题a了2.64,第二题超时了😔
1 回复 分享
发布于 2022-09-04 18:07 天津
看不懂go。。 算法题也g
点赞 回复 分享
发布于 2022-09-04 17:57 四川

相关推荐

1 1 评论
分享
牛客网
牛客企业服务