美文网首页
go语言接口的定义和使用

go语言接口的定义和使用

作者: 太平小小草 | 来源:发表于2018-09-27 19:33 被阅读0次
  • 学习go语言有几个星期,发现学的东西一直停留在表面,有些东西做不到深层次的理解。知道可以这么用,但不知道为什么。目前暂时在博客上将一些与C++有差异的语法逻列出来,达到会记忆运用的目的。希望几个月后,我再回来看这些博客可以深入理解go语言的底层机制。
package main
import (
    "fmt"
)

type man interface{
    eat()
}

type liangchuan struct{
}

func (lia liangchuan) eat(){
    fmt.Println("liangchuan eat")
}

func startTest() {  
    var nnn liangchuan = liangchuan{}   
    var mm man
    mm = &nnn       //这地方使用mm=&nnn 和  mm=nnn都可以
    mm.eat()
  
}

func main(){
    startTest()
}

如上代码,当结构体实现接口man里的eat方法,如果方法的接收者类型是“值类型”,即上面所传的形参:lia liangchuan时,可得出结论:
赋给接口变量mm值,即可以是liangchuan的变量,也可以是liangchuan的指针。
而且go语言里结构体的指针,使用时不像C++里,需要使用->来调用成员,而是直接用.来调用成员。

package main
import (
    "fmt"
)

type man interface{
    eat()
    drink()
}

type liangchuan struct{
      mydrink string
      myeat   string
}

func (lia liangchuan) drink(){
    lia.mydrink = "changedrink"
}

func (lia *liangchuan) eat(){
    lia.myeat = "changeeat"
}

func startTest() {  
    var nnn liangchuan = liangchuan{"drink","eat"}   
    fmt.Println(nnn.mydrink)
    fmt.Println(nnn.myeat,"\n")

    var mm man
    mm = &nnn
    mm.eat()
    mm.drink()

    fmt.Println(nnn.mydrink)
    fmt.Println(nnn.myeat)
}

func main(){
    startTest()
}

如上代码,当方法的接收者,即有结构体类型,又有结构体指针类型时,赋给接口mm的,必须是结构体的指针。

相关文章

  • golang 基础(29) 接口

    在 go 语言接口更重视使用者,使用者是否承认和使用接口才是重要的,这里定义 Retriever 接口提供 Get...

  • go语言接口的定义和使用

    学习go语言有几个星期,发现学的东西一直停留在表面,有些东西做不到深层次的理解。知道可以这么用,但不知道为什么。目...

  • Golang 学习笔记七 接口

    一、概念 《快学 Go 语言》第 9 课 —— 接口 1.接口定义Go 语言的接口类型非常特别,它的作用和 Jav...

  • 14-Go语言接口

    接口 接口的基本概念和使用 Go语言中的接口和现实生活中的USB3.0接口很像, 用于定义某种规范现实生活中, 只...

  • 《Go语言四十二章经》第十九章 接口

    《Go语言四十二章经》第十九章 接口 作者:李骁 19.1 接口是什么 Go 语言接口定义了一组方法集合,但是这些...

  • GraphQL了解一下

    GraphQL背景 Go语言的GraphQL实践总结REST API的使用方式是,server定义一系列的接口,c...

  • [转]Android 接口定义语言 (AIDL)

    Android 接口定义语言 (AIDL) Android 接口定义语言 (AIDL) 与您可能使用过的其他接口语...

  • V语言学习笔记-13接口

    接口定义 使用interface关键字定义接口,跟go一样 默认是模块级别,使用pub变为公共级别 接口命名跟结构...

  • Go语言-指针

    Go语言中的指针不同于C语言,Go语言的指针使用方法要简单很多。当然和C语言从指针定义到指针的使用都有很大的不同。...

  • go语言基础

    go语言基础 go 语言接口

网友评论

      本文标题:go语言接口的定义和使用

      本文链接:https://www.haomeiwen.com/subject/qkryoftx.html