zoukankan      html  css  js  c++  java
  • 关于Go 的 Interface Vevi

    最近在用Go语言写程序,

    其中遇到一个场景:写了一个接口,3个实现接口的struct。

    另外一个struct包含此接口,根据构造函数赋予不同的结构实现。

    一开始struct里写的是接口的地址,但是在创建具体实现的时候报错了。

    查看接口的定义,终于明白为什么。接口即是指针类型,如下代码:

    package main
    
      import (
      "fmt"
      )
    
      type LesssAdder interface {
          Less(b Integer) bool
          Add(b Integer)
      }
    
      type Integer int
    
      func (a Integer) Less(b Integer) bool {
          return a < b
      }
    
      func (a *Integer) Add(b Integer) {
          *a += b
      }
    
      func main() {
    
          var a Integer = 1
          var b LesssAdder = &a
          fmt.Println(b)
    
          //var c LesssAdder = a
          //Error:Integer does not implement LesssAdder 
          //(Add method has pointer receiver)
      }
    

      给b赋值的是a的指针,那么我们如果在struct中包含有接口,那么不用显示的设置指针。

    即b *LesssAdder 直接定义 b LesssAdder就可以了!

    记录下来,用来备查!!

  • 相关阅读:
    Sum of Medians
    MINSUB
    Girls Love 233
    How Many Answers Are Wrong
    Sorting It All Out
    Cube Stacking
    Boolean Expressions
    表达式求值
    #1301 : 筑地市场
    用seaborn对数据可视化
  • 原文地址:https://www.cnblogs.com/veviDP/p/7954255.html
Copyright © 2011-2022 走看看