• 撕影
    2023-01-18 来自湖南
    int | ~string | Intf2 的类型集合:{以 int 为底层类型的所有类型,以 float64 为底层类型的所有类型} 这一句应该加上 “以string 为底层类型的所有类型” 这里不加上但会对读者理解造成障碍 不加上也不影响最终编译结果 ~string是被外层求交集操作剔除的(只剩string本身,但是string本身作为基本类型又不能作为方法的receiver:)

    作者回复: 看的很细致👍。后续这个建议我让编辑老师更新一下,加上“以string 为底层类型的所有类型”。

    
    2
  • Geek14
    2023-01-05 来自北京
    type Intf1 interface { int | string F1() F2() } Intf1的类型集合是个空集合。因为int和string都没有实现F1和F2方法。 任何集合与空集合求交集结果还是空集合。所有I的类型集合也是空集合。

    作者回复: 👍

    
    2
  • lesserror
    2023-08-05 来自广东
    Tony bai 老师,有几个几个问题: 1. 文中说:“它的类型集合为 int、~string 和 Intf2 方法集合的并集”,这里 Intf2 方法,这里的方法该怎么理解,这里的 Intf2 不是一个只含有类型元素的接口吗? 2. 文中:“ int | ~string | Intf2 的类型集合:{以 int 为底层类型的所有类型,以 float64 为底层类型的所有类型,以 string 为底层类型的所有类型}。” 这里没有包含 int,是因为 Intf2 中的 ~int 包含这里的 int 类型,所以并集中并没有出现 int,是这样的吗?

    作者回复: 1. typo,应为类型集合的并集。稍后让编辑老师改一下,感谢发现。 2. 对的。因为 Intf2 中的 ~int 包含这里的 int 类型,所以并集中并没有出现 int

    
    1
  • Sunrise
    2022-11-28 来自美国
    还是搞不懂为啥 go 泛型用中括号表示而不用<>,如果单纯为了避免和小于号大于号冲突那么下面不也冲突了吗 type MyStruct [T * int]struct{} // 编译错误:undefined: T // 编译错误:int (type) is not an expression 这块如果用<>表示不就可以避免了吗

    作者回复: 我理解: 使用<>对于一些情况是无解的。而使用[ ]尽管有些时候也会模棱两可,但至少还有解,比如上面的情况。

    
    1
  • 罗杰
    2022-11-08 来自北京
    新项目已经使用1.19了,看来至少不要再用 interface{},还是 any 直观。

    作者回复: 少敲了8个字母呢:)。

    共 3 条评论
    
  • 撕影
    2023-01-18 来自湖南
    int | ~string | Intf2 的类型集合:{以 int 为底层类型的所有类型,以 float64 为底层类型的所有类型} 是不是还应该加上 “以 string 为底层类型的所有类型” ?
    
    
  • Tokamak
    2022-11-14 来自重庆
    不支持 type MyInt int 这种基于int为底层数据的类型
    
    