douxiang3978 2014-11-07 12:46
浏览 22
已采纳

不带名称的函数/方法

I'm really struggling to find a name for a type of function I've come across.

Here is the function in question:

https://github.com/go-fsnotify/fsnotify/blob/master/fsnotify.go#L32

This is how I'm using it (as per the fsnotify example):

        select {

            case event := <-watcher.Events:

                log.Println("Event Triggered: ", event)

In that Println 'event' is returning the formatted string as per the function above, I'm just struggling to understand how a straight call to 'event' is using that function yet I would be expecting it to be accessed like the struct fields (event.Name, event.Op):

event.funcForReturningNicelyFormattedEvent()

It feels like this is a 'default' function as it has no name and it just returns the formatted data - I'm struggling to come up with the name/type/search term so I can find out more and understand the concept and importantly the reasoning behind it better.

Any help is appreciated.

  • 写回答

2条回答 默认 最新

  • dongqia3502 2014-11-07 12:57
    关注

    It's very simple - println uses the String() method on any struct that implements it automatically. This is a classic use case of Go's implicit interfaces: every struct that has the methods an interface includes, is considered to be implementing the interface.

    If it has func String() string it is considered a Stringer and used by fmt. You can use it on your own structs too, of course.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?