Home Go Go中的指针转换

package main

import(
“fmt”
)

type Integer int
//给对象添加操作函数
func (self Integer)less(a Integer) (Integer){
if self<a{
return self
}

return a
}

func (self *Integer)add(a Integer) (Integer) {
*self+=a

return *self
}

func pointer_test(i *Integer){
*i+=1
}

func main() {
var i Integer = 1

min := i.less(10)
fmt.Println(min)

(&i).add(1)
fmt.Println(i)

i.add(1)
fmt.Println(i)

pointer_test(&i)
fmt.Println(i)

//pointer_test(i)
//fmt.Println(i)

}

    在上述代码中,我们定义了Integer对象,其中有个操作函数为add,它显式获取了自己对象实例的指针,所以在调用此对象的add函数时,我们采用了(&i).add(1)方式,但是也可以直接使用i.add(1)方式传入本实例的指针,因为Go会自动传入实例的指针。但是这并不代表Go会将所有实例都自动转换为指针类型进行传参,比如在调用pointer_test()时,传递&i是对的,但是传递i就会报错。

打赏
0 comment

Leave a Comment

*

code

error: Alert: Content is protected !!