我是靠谱客的博主 细腻猫咪,最近开发中收集的这篇文章主要介绍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("和为:%dn", two1.AddThem())
    	fmt.Printf("将它们添加到参数:%dn", two1.AddToParam(20))
    
    	two2 := TwoInt{3, 4}
    	fmt.Printf("和为:%dn", 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())
    }
    
    

最后

以上就是细腻猫咪为你收集整理的Go引用类型与方法声明的全部内容,希望文章能够帮你解决Go引用类型与方法声明所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部