golang中自定义一些类型和对应类型的指针方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package main
 
import "fmt"
 
// 项目开发中可以为type声明的类型编写一些方法,从而实现对象.方法的操作
 
// 声明类型
type myInt int  // int有的功能myInt都有
 
// 为MyInt类型自定义一个指针方法
// 此处可以使指针,可以是类型 *myInt myInt
// 如果是类型会拷贝一份,如果是指针不拷贝
func (i *myInt) doSomething(a, b int) int {
    return a + b + int(*i)
}
 
// 结构体也是基于type声明的类型,所以也可以使用此方式为结构体定义一些方法
type person struct {
    name string
    age int
    blog string
}
// 为person结构体类型自定义一个指针方法
// 注意:此处如果不是指针类型的话,在执行方式时,结构体对象就会被重复拷贝一份
// 如果是指针类型,就不会拷贝,节省内存空间
func (p *person) doSomething(a, b int) int {
    return a + b + p.age
}
 
func main() {
    var a myInt = 11
    ret := a.doSomething(1, 3)
    fmt.Println(ret)
 
    p := person{"mayanan", 28, "www.mayanan.cn"}
    age := p.doSomething(0, 0)
    fmt.Println(age)
 
}

  

posted @   专职  阅读(118)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示