求高人指点,这两种写法有何区别?

写法一:

type LogFile struct {
    MyFile *os.File
    Mutex  *sync.Mutex
}

func (logfile *LogFile) Close() {
    logfile.MyFile.Close()
}

func (logfile *LogFile) Lock() {
    logfile.Mutex.Lock()
}

func (logfile *LogFile) Unlock() {
    logfile.Mutex.Unlock()
}

写法二:

type LogFile struct {
    MyFile *os.File
    Mutex  *sync.Mutex
}

func (logfile *LogFile) Close() func() {
    return logfile.MyFile.Close()
}

func (logfile *LogFile) Lock() func() {
    return logfile.Mutex.Lock()
}

func (logfile *LogFile) Unlock() func() {
    return logfile.Mutex.Unlock()
}

这两种写法从调用方式、资源占用、执行效率等等方面有任何区别吗?

共 5 个回复


sambohuang

写法2 能成功吗?

# 0

16779242

嗯,写法2少弄了返回值。具体大概就是这么个意思,问的是直接调用与返回函数的区别。。。

# 1

jimmykuu

那你把问题重新编辑下好了,这样谁看得懂?描述也有问题。

# 2

16779242

@jimmykuu 已编辑。。。。

# 3

kenticny

写法2应该会报错吧,就拿第一个方法说,os.File.Close()返回值是error类型,自定义的Close返回值是func

# 4