你好哇,欢迎来答题,一起来看下
1.关于 channel 下面描述正确的是?
- A. 向已关闭的通道发送数据会引发 panic;
- B. 从已关闭的缓冲通道接收数据,返回已缓冲数据或者零值;
- C. 无论接收还是接收,nil 通道都会阻塞;
参考答案及解析:ABC。
2.下面的代码有几处问题?请详细说明。
1type T struct {
2 n int
3}
4
5func (t *T) Set(n int) {
6 t.n = n
7}
8
9func getT() T {
10 return T{}
11}
12
13func main() {
14 getT().Set(1)
15}
参考答案及解析:有两处问题:
- 1.直接返回的 T{} 不可寻址;
- 2.不可寻址的结构体不能调用带结构体指针接收者的方法;
修复代码:
1type T struct {
2 n int
3}
4
5func (t *T) Set(n int) {
6 t.n = n
7}
8
9func getT() T {
10 return T{}
11}
12
13func main() {
14 t := getT()
15 t.Set(2)
16 fmt.Println(t.n)
17}
解析若有不妥之处,欢迎在留言区交流、指正!
看下今天的题目:
1func (n N) value(){
2 n++
3 fmt.Printf("v:%p,%v\n",&n,n)
4}
5
6func (n *N) pointer(){
7 *n++
8 fmt.Printf("v:%p,%v\n",n,*n)
9}
10
11
12func main() {
13
14 var a N = 25
15
16 p := &a
17 p1 := &p
18
19 p1.value()
20 p1.pointer()
21}
2.下面的代码输出什么?
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!
如果我的文章对你有所帮助,点赞、转发都是一种支持!