天天看點

go基礎學習指針

/*
    指針有兩個核心概念:

類型指針:對這個指針類型的資料進行修改,傳遞資料使用指針,無需拷貝資料。類型指針不能進行偏移和運算。
切片:由指向起始元素的原始指針,元素數量和容量組成
*/
package main

/*
import (
    "fmt"
)
*/
//指針取址
/* func main() {
    i := 1
    s := "qax"
    fmt.Printf("%p %p", &i, &s)
} */

//指針取值
/* func main() {
    name := "wang tang yu"
    ptr := &name
    fmt.Printf("ptr type:%T\n", ptr)
    fmt.Printf("ptr address: %p\n", ptr)
    value := *ptr
    fmt.Printf("value type: %T\n", value)
    fmt.Printf("value: %v\n", value)
} */

// 指針修改值
/* func swap(a, b *int) {
    t := *a
    *a = *b
    *b = t
}

func main() {
    x, y := 1, 2
    swap(&x, &y)
    fmt.Println(x, y)
}
*/

//使用指針擷取指令函參數的方法
/* import (
    "flag"
    "fmt"
)

var mode = flag.String("mode", "add ", "process mode")

func main() {
    //定義指令行參數
    flag.Parse()
    fmt.Println(*mode)
}
*/

//建立指針的另一種方法--new()函數
import (
    "fmt"
)

func main() {
    s := new(string)
    *s = "nihao"
    fmt.Printf("s: %v\n", *s)
}