• go语言 方法


    go 语言中没有类,但是是有方法。

    方法的定义:

      func (recevier type) methodName(参数列表)(返回值列表){ }

    type School struct {
    	Name string
    	Addr string
    }
    
    func NewSchool(name, addr string) *School {
    	return &School {
    		Name:name,
    		Addr:addr,
    	}
    }
    
    func (s *School) GetName() string {  //定义方法  s 接收者类型    GetName方法名字
    	return s.Name
    }
    
    func (s *School) GetAddr() string {
    	return s.Addr
    }
    func testmodel(){
    	school := NewSchool("北京大学","北京海淀区")
    	fmt.Println(school.GetAddr()) //school.GetAddr 方法的调用
    	fmt.Println(school.Getname())
    
    }
    //运行结果
    北京海淀区
    北京大学
    

      方法和函数有什么区别呢?

    函数可以说谁都可以调用,而方法只有接收者类型相同的才可以调用。当然了,定义上也是不同的,方法是包含了接收者的函数。

    下面演示一个例子,说明方法接收者值传递和引用传递的区别

    package main
    
    import (
    	"fmt"
    )
    
    type Int int                //自定义类型Int
    
    func (i *Int) add(a, b int) {   //接收者类型是Int类型的指针,引用类型
    	*i = Int(a + b)
    	return
    }
    func (i Int) Add(a, b int) {    //接收者类型是Int类型,值类型
    	i = Int(a + b)
    	return
    }
    func main() {
    	var b Int
    	var c Int
    	b.add(100, 200)  //300     些时传入的接者i是&b,就是变量b的地址相当于(&b).add(100,200),add方法内部:*(&b)=Int(100+200) 就是这个i指针指向的变量b的值改变为300
    	fmt.Println(b)
    	c.Add(100,200)    //值传递不带回主函数
    	fmt.Println(c) // 0
    	
    }
    

      

  • 相关阅读:
    Mysql 创建用户并授权方法
    anyproxy 拦截响应
    Pycharm中加载和使用虚拟环境
    anyproxy 拦截发送请求
    微信小程序测试
    Django admin 后台管理
    Django简介
    Mysql root 密码忘记解决办法
    APP专项测试_启动性能分析
    Windows环境搭建Python虚拟环境
  • 原文地址:https://www.cnblogs.com/wanghaijun999/p/8157142.html
Copyright © 2020-2023  润新知