golang接口的使用:给实现类中属性赋值

栏目: Go · 发布时间: 7年前

内容简介:使用接口给实现类的变量赋值,例一错误;例二正确。例一:例二:

使用接口给实现类的变量赋值,例一错误;例二正确。

例一:

package main

import (
     "fmt"
)

//声明一个接口
type IUser interface {
     GetName() string
     SetName(name string)
}

//声明一个User的结构去实现接口
type User struct {
     Name string
}

func (a User) GetName() string {
     return a.Name
}

func (a User) SetName(name string) {
     a.Name = name
}

func main() {
     var a IUser                   //声明a的类型是IUser类型
     a = User{"李磊"}               //给接口变量赋值
     fmt.Println(a.GetName())      //输出:李磊
     a.SetName("韩梅梅")
     fmt.Println(a.GetName())      //输出:李磊,这里实际想输出的是"韩梅梅"
}

例二:

package main

import (
     "fmt"
)

//声明一个接口
type IUser interface {
     GetName() string
     SetName(name string)
}

//声明一个User的结构去实现接口
type User struct {
     Name string
}

func (a User) GetName() string {
     return a.Name
}
//要改变对象的值必须用指针
func (b *User) SetName(name string) {
     b.Name = name
}

func main() {
     var a IUser                   //声明a的类型是IUser类型
     a = &User{"李磊"}              //a是指针了
     fmt.Println(a.GetName())      //输出:李磊
     a.SetName("韩梅梅")             
     fmt.Println(a.GetName())      //输出:韩梅梅

}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PHP高级程序设计

PHP高级程序设计

Kevin McArthur / 汪泳 等 / 人民邮电出版社出版 / 2009.7 / 45.00元

今天,PHP已经是无可争议的Web开发主流语言。PHP 5以后,它的面向对象特性也足以与Java和C#相抗衡。然而,讲述PHP高级特性的资料一直缺乏,大大影响了PHP语言的深入应用。 本书填补了这一空白。它专门针对有一定经验的PHP程序员,详细讲解了对他们最为重要的主题:高级面向对象、设计模式、文档、测试和标准PHP库等内容。同时,为适应目前Web开发的新趋势,作者还全面探讨了MVC架构和Z......一起来看看 《PHP高级程序设计》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换