---
# System prepended metadata

title: 如何將 golang 1.18 升版到 1.22
tags: [Golang, struct]

---

如何將 golang 1.18 升版到 1.22
===
###### tags: `Golang`
###### tags: `Golang`, `struct`

<br>

[TOC]

<br>

## 方法
### 使用套件管理器
> 方法最簡單

- Ubuntu/Debian：
    ```bash
    sudo add-apt-repository ppa:longsleep/golang-backports
    sudo apt update
    sudo apt install golang-go  # 直升到最新
    ```

<br>

## 安裝後驗證：
```bash
go version  # 應顯示 go1.22 或更高版本
```

<br>

---

## 討論
### 如何從 1.18. 升版到 1.22 ?
- ###
    ```
    $ go version
    go version go1.18.1 linux/amd64
    ```
    如何升版到 1.22 ?

- ### gpt-5 (2025/11/13)
    下面給你最穩、最不會踩雷的升級方式（Linux x86-64）。我用臺灣用語＆精簡步驟寫，你照抄即可。

    ### 方法 A：官方壓縮檔安裝（建議）

    > 適合任何發行版；不受套件庫版本限制

    1. 檢查現況（看是否是 apt/snap 裝的）

        ```bash
        which go
        go env GOROOT
        dpkg -l | grep -E '^ii\s+golang|^ii\s+golang-go' || true
        snap list | grep '^go\s' || true
        ```

    2. 若是用 apt/snap 安裝過，先移除以避免衝突（可選，但建議做）

        ```bash
        # 若有列出 golang-go 或 golang-1.xx
        sudo apt purge -y golang-go golang-1.* || true
        # 若有 snap 的 go
        sudo snap remove go || true
        ```

    3. 下載 Go 1.22 的最新修補版（將 x 换成最新小版號）

        ```bash
        cd /tmp
        curl -LO https://go.dev/dl/go1.22.x.linux-amd64.tar.gz
        curl -LO https://go.dev/dl/go1.22.x.linux-amd64.tar.gz.sha256
        sha256sum -c go1.22.x.linux-amd64.tar.gz.sha256   # 顯示 OK 才往下
        ```

    4. 移除舊版並安裝到 /usr/local

        ```bash
        sudo rm -rf /usr/local/go
        sudo tar -C /usr/local -xzf go1.22.x.linux-amd64.tar.gz
        ```

    5. 加入 PATH（若之前沒加）

        ```bash
        echo 'export PATH=/usr/local/go/bin:$PATH' >> ~/.bashrc
        # 若你常用 zsh：
        echo 'export PATH=/usr/local/go/bin:$PATH' >> ~/.zshrc
        exec $SHELL -l
        ```

    6. 驗證版本

        ```bash
        go version
        # 期望輸出：go version go1.22.x linux/amd64
        ```

    ### 方法 B：僅安裝在家目錄（無 sudo 權限時）

    ```bash
    cd ~
    rm -rf ~/go-1.22 2>/dev/null
    mkdir -p ~/go-1.22
    tar -C ~/go-1.22 -xzf /tmp/go1.22.x.linux-amd64.tar.gz
    echo 'export GOROOT=$HOME/go-1.22/go' >> ~/.bashrc
    echo 'export PATH=$GOROOT/bin:$PATH' >> ~/.bashrc
    exec $SHELL -l
    go version
    ```

    ### 升級後注意事項

    * 專案的 `go.mod` 建議把 `go 1.xx` 改成：

      ```text
      go 1.22
      ```

      然後在專案目錄執行：

      ```bash
      go mod tidy
      ```
    * 如果你需要共存多版本，考慮用版本管理器（例如 `asdf`），或用不同的 `GOROOT`/`PATH` 隔離。
    * 若你的環境以前手動設定過 `GOROOT` 指向舊路徑，記得更新或移除，避免混用。

    需要我幫你把 `x` 查成目前最新的小版號，或幫你寫一個一鍵升級腳本嗎？

<br>

{%hackmd vaaMgNRPS4KGJDSFG0ZE0w %}