概述
随手记录,从入门到跑路,目前尚在入门路上,知识体系并不多,目前都是零零散散的知识片段,仅用于记录Go的学习,顺便为了搜集制作视频的素材。入门的路上,也望各位大神多多关注指点指点小弟的错误。
未完...持续更新
一、常见引用类型
- 数组切片
- map
- channel
- 接口(interface)
二、方法
- 方法是函数,不允许方法重载。如果基于接收者类型,则允许重载。(接收者类型是啥玩意?)
- 声明
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也不会报错? }
- 基于指针对象的方法
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引用类型与方法声明所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复