王也枉不了 2023-05-21 18:13 采纳率: 33.3%
浏览 18

这句话啥意思啊,,go

当一个接口只被一个单一的具体类型实现时有一个例外,就是由于它的依赖,这个具体类型
不能和这个接口存在在一个相同的包中。这种情况下,一个接口是解耦这两个包的一个好方
式。

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-21 20:08
    关注
    • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7561050
    • 这篇博客也不错, 你可以看下GO语言实现接口,需要实现所有接口方法吗?
    • 除此之外, 这篇博客: Go线程模型&异步编程的能力中的 计算节点2:将通道数据读取,异步返回保存读取数据的平方数通道 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • func sq(in <-chan int) <-chan int {
      	out := make(chan int)
      	go func() {
      		//异步的从in获取数据,开始是阻塞的,遍历写入out,当gen调用close(out)后就会不在阻塞等待in的数据
      		for n := range in {
      			out <- n * n
      		}
      		// 通知main goroutine的for 通道数据写入完,读取完就可以了,不用阻塞了
      		close(out)
      	}()
      	return out
      }

      测试:

      package main
      
      import (
      	"fmt"
      )
      
      // gen函数,nums表示多个int类型数据,多参数  返回一个只读取的通道, 不会阻塞
      func gen(nums ...int) <-chan int {
      	out := make(chan int)
      	go func() {
      		// 写入所有数据,然后关闭通道,写入一个之后等待消费者消费后,才可以再次写入
      		for _, n := range nums {
      			out <- n
      		}
      		// close 后不能写入,其他goroutine读取out的数据完之后就会退出不在阻塞
      		close(out)
      	}()
      	return out
      }
      
      func sq(in <-chan int) <-chan int {
      	out := make(chan int)
      	go func() {
      		//异步的从in获取数据,开始是阻塞的,遍历写入out,当gen调用close(out)后就会不在阻塞等待in的数据
      		for n := range in {
      			out <- n * n
      		}
      		// 通知main goroutine的for 通道数据写入完,读取完就可以了,不用阻塞了
      		close(out)
      	}()
      	return out
      }
      func main() {
      	c := gen(2, 3)
      	out := sq(c)
          
      	// 类似于JAVA CompleteFuture.thenApply ..等
      	for i := range out{
      		fmt.Println(i)
      	}
      }

               

      同样的sq函数输入,输出类似,可以多次调用该节点

      func main() {
      	c := gen(2, 3)
      	out := sq(c)
      	out = sq(out)
      	// 类似于JAVA CompleteFuture.thenApply ..等
      	for i := range out{
      		fmt.Println(i)
      	}
      }
    • 您还可以看一下 CSDN讲师老师的架构师成长计划课程中的 软硬一体实现数据库性能优化小节, 巩固相关知识点
    评论

报告相同问题?

问题事件

  • 创建了问题 5月21日

悬赏问题

  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL
  • ¥35 跳过我的世界插件ip验证
  • ¥15 抖音看过的视频,缓存在哪个文件
  • ¥15 自定义损失函数报输入参数的数目不足
  • ¥15 如果我想学习C大家有是的的资料吗
  • ¥15 根据文件名称对文件进行排序
  • ¥15 deploylinux的ubuntu系统无法成功安装使用MySQL❓
  • ¥15 有人会用py或者r画这种图吗