#!/bin/bash

# 提示用户选择安装方式
echo "选择安装方式："
echo "1 - 安装最新版本的 Go (默认)"
echo "2 - 指定安装某一版本的 Go"
read -p "请输入选项 (直接回车默认安装最新版本): " user_choice

if [ "$user_choice" == "2" ]; then
  # 用户选择指定版本安装
  read -p "请输入要安装的 Go 版本 (例如 1.22.2): " version
  GO_VERSION="go${version}.linux-amd64"
  DOWNLOAD_URL="https://go.dev/dl/$GO_VERSION.tar.gz"
else
  # 默认或选择1，安装最新版本
  echo "正在获取 Go 语言最新版本下载链接..."
  LATEST_VERSION=$(curl -s https://go.dev/dl/ | grep -oP 'go[0-9.]+\.linux-amd64\.tar\.gz' | head -1)
  if [ -z "$LATEST_VERSION" ]; then
    echo "未能获取到最新版本 Go 的下载链接。"
    exit 1
  fi
  DOWNLOAD_URL="https://go.dev/dl/$LATEST_VERSION"
  GO_VERSION="$LATEST_VERSION"
fi

# 删除旧的 Go 安装
echo "正在移除旧版本 Go..."
rm -rf /usr/local/go

# 下载并解压新的 Go 版本
echo "正在下载并安装 $GO_VERSION..."
wget -q $DOWNLOAD_URL -O /tmp/go.tar.gz
tar -C /usr/local -xzf /tmp/go.tar.gz
rm /tmp/go.tar.gz

# 添加 Go 到 PATH 环境变量
echo "正在配置环境变量..."
if ! grep -q '/usr/local/go/bin' $HOME/.profile; then
  echo "export PATH=\$PATH:/usr/local/go/bin" >> $HOME/.profile
  source $HOME/.profile
fi

# 验证安装
echo "安装完成。正在验证安装..."
go version

# 验证命令是否成功打印版本号
if [ $? -eq 0 ]; then
  echo "Go 安装成功，版本为: $(go version)"
  bash
else
  echo "Go 安装失败"
fi

