golang 什么时候运用指针_后端开发

有时刻看他人的go代码,发明他们有的在代码内里用了指针,有的不运用。

假设有个构造体范例叫做Person,发明有些要领会用func methodA (*person Person)作为参数,或许运用 func *(person Person) methodA()作为构造体本身的要领,也就是person这个构造体 (引荐进修:go)

能够直接挪用methodA,然则用的是指针。

或许在map构造内里看到var personMap map[string]*Person 的用法

假如是从java转过来golang的话,大概不太好明白。由于java的天下是没有指针的,直接通报过去就能够用了,然则到golang上须要注重许多处所。

那末什么时刻该用呢?为何有些处所须要用呢?

不运用指针的话,某些状况是没法赋值给构造体的

接下来看一段代码,这段代码不运用任何指针,先定义一堆用于测试的对象

type Person struct {  //person构造体,包括岁数,称号,车
    age  int
    name string
    car  Car
}

type Car struct {  //person名下的车
    name string  //车的名字
}

var personMap map[string]Person   //一个寄存person的map

func setName(person Person, name string) { //给参数person设置名字
    person.name = name
}

func (person Person) setName(name string) {  //设置名字
    person.name = name
}
func printName(person Person){  //打印person的名字
    fmt.Println(person.name)
}
func (person Person)printName(){  //构造体person本身支撑打印名字
    fmt.Println(person.name)
}

所以得出结论,当我们须要修正构造体的变量内容的时刻,要领传入的构造体变量参数须要运用指针,也就是构造体的地点

须要修正map中的架构体的变量的时刻也须要运用构造体地点作为map的value

假如仅仅是读取构造体变量,能够不运用指针,直接通报援用即可

*type 这里的type这个变量寄存的东西是地点,这点须要明白,须要运用&type获取到地点。

以上就是golang 什么时刻运用指针的细致内容,更多请关注ki4网别的相干文章!

Leave A Comment