我试图用它来阅读' \ r \ n'从串口终止字符串。虽然它没有将其作为内置函数,但我找到this answer并从那里开始工作(在创建的端口上使用扫描仪并使用自定义拆分功能)。
现在我的问题正是如此,为什么这有效?端口stuct如下(来自包源代码):
type Port struct {
// We intentionly do not use an "embedded" struct so that we
// don't export File
f *os.File
}
因此文件指针只是Port类型的一个字段,它没有嵌入或任何东西。
但以下代码有效:
func handler(port *serial.Port) {
scanner := bufio.NewScanner(port)
scanner.Split(scanMessageLine)
for {
scanner.Scan()
messageBytes := scanner.Bytes()
}
}
我如何创建一个扫描仪,它需要带端口的io.Reader接口;虽然它只是实现接口的端口成员,而不是端口本身?
此外,Webstorm中的代码完成(我将其与Golang插件一起使用)建议f上的函数作为端口的直接成员,但是如果我打印端口stuct实例它只包含一个指针?
只是为了消除IDE做一些奇怪的事情,我从命令行构建了程序,它仍然有效。
是否有一些奇特的指针伏都教我在这里失踪?或者它是常用的Golang功能吗?是否有一个单独成员的结构直接暴露其成员的方法?即使它没有被嵌入?
由于完全有可能我完全误解了整个界面的事情,如果有一些很好的深度材料,你们建议我应该阅读,我很乐意这样做。考虑到界面如何遍布各处,我想要正确理解它们。