Golang之指針(point)再探索


先記錄代碼

package main

import "fmt"

/*
聲明指針
*T 是指向類型T的值的指針變量的類型
*/

func main() {
    //b := 255
    //var a *int = &b // a是int指針,指向b的內存地址
    //fmt.Printf("Type of is:%T\n", a)
    //fmt.Println("address of b is", a)
    //

    //a := 22
    //var b *int //b 這個變量是int類型的指針變量,變量的值,也只能是int型指針
    //if b == nil {
    //    // 指針的零值是nil
    //    fmt.Println("b is", b)
    //    b = &a
    //    fmt.Println("b after initialization is", b)
    //}

    //b := 255
    //a := &b
    //fmt.Println("address of b is", a)//打印b的內存地址
    //fmt.Println("value of b is", *a)//打印b的值,可以通過*a指針

    //b := 255
    //a := &b
    //fmt.Println("address of b is:", a) //b的內存地址
    //fmt.Println("value of b is:", *a)
    //*a++ //通過a的指針加一
    //fmt.Println("new value of b is:", b)

    //a := 58
    //fmt.Println("value of a befor func call is:", a)
    //b := &a
    //change(b) //指針變量b,改變a的值,a=55,
    //fmt.Println("value of a after call is:", a)

    /*
        不要將指向數組的指針,作為參數傳遞給函數,改用切片

    */
    //a := [3]int{89, 90, 91}
    //modify(&a) //傳遞數組a的地址,給modify
    //fmt.Println(a)

    a := [3]int{89, 90, 91}
    modify(a[:]) //傳入一個a的切片
    fmt.Println(a)
}

//函數傳遞指針,改變參數的內存地址。
//func change(val *int) {
//    *val = 55

//修改數組的值
//傳遞指向數組的指針,作為參數,並且對其修改
//func modify(arr *[3]int) {
//    (*arr)[0] = 90
//    //arr[0]=90  //也可以這么寫,這是上面的簡寫形式(*a)[X]可以寫成a[X]
//}

//切片方式修改函數
//這個方法是修改函數最常用的,最好的方法。。。。。。。。。。。。
func modify(sls []int) {
    sls[0] = 91
}

//Go不支持如同C的指針運算

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM