Go part 3

指针类型

要明白指针,需要知道几个概念:指针地址指针类型指针取值

取指针地址

每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置,使用 & 放在变量前面进行“取指针地址”操作

var int a = 10
fmt.Println("address:", &a)

// address: 0xc000098010

获取指针类型

package main
  
import (
    "fmt"
)

func main(){
    var a int = 100
    addrA := &a
    fmt.Printf("pointer type: %T\n",addrA)
}

运行结果:
pointer type: *int

从指针获取指针指向的值

使用 * 方便指针地址前面进行“指针取值”操作

package main
  
import (
    "fmt"
)

func main(){
    var a int = 100
    addrA := &a
    fmt.Println("address:", addrA)

    valueA := *addrA
    fmt.Println("value:", valueA)
}

结果:
address: 0xc000098010
value: 100

通过指针修改指针指向的值

package main
  
import (
    "fmt"
)

func main(){
    var a int = 100
    addrA := &a
    fmt.Println("address:", addrA)

    valueA := *addrA
    fmt.Println("value:", valueA)

    // modify
    *addrA = 1
    fmt.Println("modify value:", a)
}

运行结果:
address: 0xc000098010
value: 100
modify value: 1

练习1:写一个函数,使用指针交换两个整数的值

package main

import (
    "fmt"
)

func swap(a *int, b *int){
    *a, *b = *b, *a
}


func main(){
    var (
        a int = 100
        b int = 200
    )

    swap(&a, &b)
    fmt.Println(a, b)
}

运行结果:
200 100

  

  

猜你喜欢

转载自www.cnblogs.com/kaichenkai/p/10911070.html
今日推荐