怪奇物语

怪奇物语

首页 新随笔 联系 管理

golang中 &和*的区别

  1. & 用于获取地址

  2. *
    用于声明时,就是声明指针类型,
    用于解引用时,就是解引用指针。

  • & 是取地址操作符,用于获取变量的内存地址。例如:
package main

import "fmt"

func main() {
    var num int = 10
    // 获取 num 的地址并赋值给 p
    p := &num  
    fmt.Printf("num 的地址是:%p\n", p)
}
  • * 有两种主要用途:

    • 当用于声明变量时,如 *Student,表示定义一个指向 Student 结构体的指针类型。例如:
package main

import "fmt"

type Student struct {
    name string
    age  int
}

func main() {
    // 创建一个 Student 结构体实例
    s := Student{name: "Alice", age: 20}
    // 创建一个指向 Student 结构体的指针
    var ps *Student = &s  
    fmt.Printf("ps 指向的 Student 实例的 name 字段值为:%s\n", ps.name)
}
  • 当用于指针解引用时,* 可以获取指针所指向的值。例如:
package main

import "fmt"

func main() {
    var num int = 10
    p := &num
    // 解引用指针 p,获取其指向的值并修改
    *p = 20  
    fmt.Println(num) 
}
posted on 2025-01-12 08:00  超级无敌美少男战士  阅读(246)  评论(0)    收藏  举报