Go语言基础11——指针

一、指针的概念

package main
import "fmt"

// 指针
func main() {
    a := 10           // int类型
    b := &a           // *int类型 int指针
    fmt.Println(a, &a) // 10 0xc0000100c0
    fmt.Println(b)     // 0xc0000100c0
    // 变量b是一个int类型的指针 存储变量a的内存地址
    c := *b        // 根据内存地址取值
    fmt.Println(c) // 10
}

二、指针传值示例

package main
import "fmt"

// 指针传值示例
func modify1(x int){
    x = 100
}

func modify2(y *int){
    *y = 100
}

func main() {
    a := 1
    modify1(a)
    fmt.Println(a) // 1
    modify2(&a)
    fmt.Println(a) // 100
}

三、内存分配

package main
import "fmt"

func main() {
    // new用于类型的内存分配 内存对应的值为类型零值 返回指向类型的指针
    a := new(int)
    fmt.Println(*a) // 0
    *a = 100
    fmt.Println(*a) // 100
    
    // make只用于slice、map和channel的初始化 返回这三个引用类型本身
    var b map[string]int
    fmt.Println(b)
    b = make(map[string]int, 10)
    fmt.Println(b)
    b["jiayuan"] = 100
    fmt.Println(b)
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容