Go引用类型与方法声明

随手记录,从入门到跑路,目前尚在入门路上,知识体系并不多,目前都是零零散散的知识片段,仅用于记录Go的学习,顺便为了搜集制作视频的素材。入门的路上,也望各位大神多多关注指点指点小弟的错误。

未完...持续更新

一、常见引用类型

  1. 数组切片
  2. map
  3. channel
  4. 接口(interface)

二、方法

  1. 方法是函数,不允许方法重载。如果基于接收者类型,则允许重载。(接收者类型是啥玩意?)
  2. 声明
    func (recv receiver_type) methodName(parameter_list) (return_value_list){
        //执行代码块
        //....
    }
    
    //调用的方法不需要使用recv的值,则使用_符号替换,如:
    func (_ receiver_type) methodName(parameter_list) (return_value_list){
    
        //执行代码块
        //...
    }
    
    //案例:
    package main
    
    import "fmt"
    
    type TwoInt struct{
    
    	a int
    	b int
    }
    
    func main(){
    
    	//方法接收者的说明
    	//创建并实例化two1对象
    	two1 := new(TwoInt)
    	two1.a = 12
    	two1.b = 10
    
    	fmt.Printf("和为:%d\n", two1.AddThem())
    	fmt.Printf("将它们添加到参数:%d\n", two1.AddToParam(20))
    
    	two2 := TwoInt{3, 4}
    	fmt.Printf("和为:%d\n", two2.AddThem())
    
    	//非结构体类型方法的例子
    	fmt.Println("\n")
    	fmt.Println(IntVector{1, 2, 3}.Sum())
    }
    
    func (tn *TwoInt) AddThem() int{
    	return tn.a + tn.b
    }
    
    func (tn *TwoInt) AddToParam(param int) int {
    	return tn.a + tn.b + param
    }
    
    func (v IntVector) Sum() (s int){
    	for _, x := range v{
    		s += x
    	}
    	
    	return s
    	//直接return 不加s也不会报错?
    }

  3.  基于指针对象的方法
    type HttpResponse struct{ status_code int}
    
    //基于指针
    func (r *HttpResonse)validResponse() {r.status_code = 200}
    
    //基于值
    func (r HttpResponse)updateStaut() string{ return fmt.Sprint(r)}
    
    func main() {
    
        var r1 HttpResponse
        r1.validResponse()
        fmt.Println(r1.updateStatus())
    
        //r2是指针
        r2 := new(HttpResonse)
        r2.validResponse()
        fmt.Println(r2.updateStauts())
    }
    
    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值