### 聲明指針
>var 變量名 *int
```
package main
import "fmt"
func main() {
var p *int
fmt.Println(p)
// <nil>
// 由于指針未指向任何地址,故打印<nil>
}
```
一般情況下,指針的變量類型為*int,變量名為p (point)或者 ptr
### 獲取變量地址
> **使用操作符 "&" 獲取變量地址,取得地址的值賦給指針變量**
```
package main
import "fmt"
func main() {
num := 1
var p *int
p = &num
fmt.Println("num變量的地址為:", p, &num)
// num變量的地址為: 0xc000014088 0xc000014088
fmt.Println("指針變量p的地址為:", &p)
// 指針變量p的地址為: 0xc000006028
}
```
### 獲取指針指向的內容
> **使用操作符"*",獲取指針所指向地址值的內容**
```
package main
import "fmt"
func main() {
num := 1
var p *int
p = &num
fmt.Println("num變量的地址為:", p, &num)
// num變量的地址為: 0xc000014088 0xc000014088
fmt.Println("指針變量p的地址為:", &p)
// 指針變量p的地址為: 0xc000006028
fmt.Println("指針變量p所指向的內容:", *p)
// 指針變量p所指向的內容: 1
}
```
如果指針未指向任何地址,輸出地址內容就會報錯
### 使用指針修改值
> ***變量名 = 修改值**
```
package main
import "fmt"
func main() {
num := new(int)
var p *int
p = &num
fmt.Println("num變量的地址為:", p, &num)
// num變量的地址為: 0xc000014088 0xc000014088
fmt.Println("指針變量p的地址為:", &p)
// 指針p的地址為: 0xc000006028
fmt.Println("指針變量p所指向的內容:", *p)
// 指針變量p所指向的內容: 1
*p = 10
fmt.Println("指針變量p所指向的內容:", *p, num)
// 指針變量p所指向的內容: 10 10
}
```
```
package main
import "fmt"
func main() {
var p *int
p = new(int)
fmt.Println(p, *p)
// 0xc000014088 0
*p = 10
fmt.Println(p, *p)
// 0xc000014088 10
}
```
- 安裝開發環境
- 安裝開發環境
- 安裝詳細教程
- 引入包
- Go語言基礎
- 基本變量與數據類型
- 變量
- 數據類型
- 指針
- 字符串
- 代碼總結
- 常量與運算符
- 常量
- 運算符
- 流程控制
- if判斷
- for循環
- switch分支
- goto跳轉
- 斐波那契數列
- Go語言內置容器
- 數組
- 切片
- 映射
- 函數
- 函數(上)
- 函數(中)
- 函數(下)
- 小節
- 包管理
- 結構體
- 結構體(上)
- 結構體(中)
- 結構體(下)
- 小節
- 錯誤處理
- 錯誤處理
- 宕機
- 錯誤應用
- 小節
- 文件操作
- 獲取目錄
- 創建和刪除目錄
- 文件基本操作(上)
- 文件基本操作(中)
- 文件基本操作(下)
- 處理JSON文件
- 接口與類型
- 接口的創建與實現
- 接口賦值
- 接口嵌入
- 空接口
- 類型斷言(1)
- 類型斷言(2)
- 小節
- 并發與通道
- goroutine協程
- runtime包
- 通道channel
- 單向通道channel
- select
- 線程同步
- 多線程的深入學習
- http編程
- http簡介
- Client和Request
- get請求
- post請求
- 模塊函數方法
- 模塊
- fmt庫,模塊
- 項目練習
- 爬蟲:高三網
- 爬蟲:快代理
- 爬蟲:快代理2
- 多線程:通道思路
- 多線程爬蟲:快代理