package
0.0.0-20240429050328-3be44a187b12
Repository: https://github.com/robertwang/golang_study.git
Documentation: pkg.go.dev

# README

Go每日一题

今日(2022-12-07) 的题目如下

下面 A、B 两处应该填入什么代码,才能确保顺利打印出结果?

package main

import (
	"fmt"
)

type S struct {
	m string
}

func f() *S {
	return __  //A
}

func main() {
	p := __    //B
	fmt.Println(p.m) //print "foo"
}

自测答案

A: &S{"foo"}
B: &f()

./main.go:23:8: invalid operation: cannot take address of f() (value of type *S)
🔑 答案解析:

参考答案及解析:

A. &S{"foo"} B. *f() 或者 f()

f() 函数返回参数是指针类型,所以可以用 & 取结构体的指针; B 处,如果填 *f(),则 p 是 S 类型;如果填 f(),则 p 是 *S 类型,不过都可以使用 p.m 取得结构体的成员。