go指針

一。定義:函數

      數據類型前加 * 號: var xx *int   var yy  *string  。。。學習

二。用途:spa

      指針的一大用途就是能夠將變量的指針做爲實參傳遞給函數,從而在函數內部可以直接修改實參所指向的變量值命令行

三。用法:設計

     & 取一個變量的地址指針

     * 取一個指針變量所指向的地址的值code

四。new函數:初始化了一個地址blog

package main
import (
    "fmt"
 )
func set_value(x_ptr *int) {
    *x_ptr = 100
}
func main() {
    x_ptr := new(int)
 
set_value(x_ptr)
//x_ptr 指向的地址 
fmt.Println(x_ptr) 
//x_ptr 自己的地址
 fmt.Println(&x_ptr) 
//x_ptr 指向的地址值 
fmt.Println(*x_ptr)
 }

 

五。go語言命令行入參,經過flag入參數。 字符串

Go 語言的 flag 包中,定義的指令以指針類型返回。經過學習 flag 包,能夠深刻了解指針變量在設計上的方便之處。

下面的代碼經過提早定義一些命令行指令和對應變量,在運行時,輸入對應參數的命令行參數後,通過 flag 包的解析後便可經過定義的變量獲取命令行的數據。

獲取命令行輸入:string

 1 package main
 2 // 導入系統包
 3 import (
 4     "flag"
 5     "fmt"
 6 )
 7 // 定義命令行參數
 8 var mode = flag.String("mode", "", "process mode")
 9 func main() {
10     // 解析命令行參數
11     flag.Parse()
12     // 輸出命令行參數
13     fmt.Println(*mode)
14 }

 

將這段代碼命名爲main.go,而後使用以下命令行運行:

$ go run flagparse.go --mode=fast

命令行輸出結果以下:
fast

代碼說明以下:

  • 第 8 行,經過 flag.String,定義一個 mode 變量,這個變量的類型是 *string。後面 3 個參數分別以下:
    • 參數名稱:在給應用輸入參數時,使用這個名稱。
    • 參數值的默認值:與 flag 所使用的函數建立變量類型對應,String 對應字符串、Int 對應整型、Bool 對應布爾型等。
    • 參數說明:使用 -help 時,會出如今說明中。
  • 第 11 行,解析命令行參數,並將結果寫入建立的指令變量中,這個例子中就是 mode 變量。
  • 第 13 行,打印 mode 指針所指向的變量。


因爲以前使用 flag.String 已經註冊了一個 mode 的命令行參數,flag 底層知道怎麼解析命令行,而且將值賦給 mode*string 指針。在 Parse 調用完畢後,無須從 flag 獲取值,而是經過本身註冊的 mode 這個指針,獲取到最終的值。代碼運行流程以下圖所示。

圖:命令行參數與變量的關係
相關文章
相關標籤/搜索