6个简例带你你玩转Golang指针

Posted 虫虫搜奇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6个简例带你你玩转Golang指针相关的知识,希望对你有一定的参考价值。

6个简例带你你玩转Golang指针

The of a pointer is nil. That means any uninitialized pointer will have the value nil. Let's see a complete example -

package main

import "fmt"

func main() {

var p *int

fmt.Println("p = ", p)

}

# Output

p = <nil>

指针声明

T类型的指针使用以下语法声明:

//类型T的指针

var p *T

类型T是指针指向的变量的类型。比如整型指针:

//类型为整型指针

var p *int

指针的零值,不是0,而是nil。任何未初始化的指针值都为nil。我们直接撸一个代码:

package main

import "fmt"

func main() {

var p *int

fmt.Println("chongchong p = ", p)

}

6个简例带你你玩转Golang指针

初始化指针

var x = 100

var p *int = &x

就像Golang中的其他变量一样,编译器也会推断指针变量的类型。所以你可以在上面的例子中省略指针p中的类型声明,直接简写为:

var p = &x

撸代码之例2 :

package main

import "fmt"

func main() {

var a = 3.1415926

var p = &a

fmt.Println("chongchong value a = ", a)

fmt.Println("chongchong Address a = ", &a)

fmt.Println("chongchong value p = ", p)

}

输出结果

6个简例带你你玩转Golang指针

指针解引用

package main

import "fmt"

func main() {

var a = 100

var p = &a

fmt.Println("chongchong a = ", a)

fmt.Println("chongchong p = ", p)

fmt.Println("chongchong *p = ", *p)

}

输出入下:

6个简例带你你玩转Golang指针

通过*运算符不仅能取值,还可以对指向变量值做修改。以下示例通过指针p设置存储在变量a中的值:

package main

import "fmt"

func main() {

var a = 8888

var p = &a

fmt.Println("chongchong a = ", a)

*p +=1112

fmt.Println("chongchong a(altered)= ", a)

}结果如下:

6个简例带你你玩转Golang指针

多重指针

指针可以指向任何类型的变量。所以也可以指向另一个指针。以下示例显示如何创建指向另一个指针的指针:

package main

import "fmt"

func main() {

var a = 3.141596

var p = &a

var pp = &p

fmt.Println("a = ", a)

fmt.Println("chong address a = ", &a)

fmt.Println("p = ", p)

fmt.Println("chongchong p = ", &p)

fmt.Println("pp = ", pp)

fmt.Println("chongchong *pp = ", *pp)

fmt.Println("chongchong **pp = ", **pp)

}

结果输出为

Go中没有指针算术

老司机,都知道,可以在C/C ++中队指针做计算,但是golang就不支持那样做了。

package main

func main() {

var x = 67

var p = &x

var p1 = p + 1 // Compiler Error: invalid operation

}

但是,golang中可以使用==运算符来比较两个相同类型的指针是否相等。

包主要

package main

import "fmt"

func main() {

var a = 3014

var p1 = &a

var p2 = &a

if p1 == p2 {

fmt.Printf("chongchong p1(%x) = p2(%x) value(%d): \n",p1,p2,*p1)

}

}

结果为:


以上是关于6个简例带你你玩转Golang指针的主要内容,如果未能解决你的问题,请参考以下文章

一篇文章带你玩转Mac Finder

一篇带你玩转 Elasticsearch 中文分词

带你玩转三子棋

手把手带你玩转Spark机器学习-使用Spark进行文本处理

江哥带你玩转C语言 | 09 - C语言进制和位运算

一套Linux渗透教程(带你玩转Kali附安卓下Kali渗透,劫持等)(无KEY) 解压密码 谢谢!