package _case
import (
"fmt"
"strconv"
"time"
"unsafe"
)
// ConvertCase 類型轉換
func ConvertCase() {
// 同類型轉換 數字和數字 字符串和字符和字節
// 不同類型轉換 數字和字符串
// 接口類型轉其他類型
// 數字類型轉換
var num1 int = 100
fmt.Println("int 轉 int64 :", int64(num1))
var num2 int64 = 100
fmt.Println("int64 轉 int: ", int(num2))
// 字符串與數字類型轉換
var num3 = 100
fmt.Println("int 轉 string: ", strconv.Itoa(num3)+"abc")
// 字符串轉數字類型
var str1 = "100"
str1_num, err := strconv.Atoi(str1)
if err != nil {
fmt.Println(err.Error())
}
fmt.Println("string 轉 int: ", str1_num)
// 數字轉字符串
var num4 int64 = 1010
// 基於10 進制
fmt.Println("int64 轉 int: ", strconv.FormatInt(num4, 10))
var str2 = "1010"
fmt.Println("字符串轉數字")
fmt.Println(strconv.ParseInt(str2, 10, 64))
// 字符串轉byte
var str3 = "你好世界"
bytes1 := []byte(str3)
fmt.Println("字符串轉字節: ", bytes1)
fmt.Println("字節轉字符串: ", string(bytes1))
// 字符串與 rune 轉換 ;類似於字符類型.處理 unicode
var rune1 = []rune(str3)
fmt.Println("字符串轉rune: ", rune1)
fmt.Println("rune轉字符串: ", string(rune1))
fmt.Println("rune轉字符串: ", string(rune1[2])) // 碼點索引
fmt.Println("字符串轉 int32: ", []int32(str3))
// 接口類型轉換具體類型
var inf interface{} = 100
var infStrut interface{} = user{Name: "like"}
i, ok := inf.(int)
fmt.Println("接口類型轉換具體類型: ", i, ok)
u, ok1 := infStrut.(user)
fmt.Println("接口類型轉換具體類型: ", u, ok1)
// 時間類型轉換
var t time.Time
t = time.Now()
timeStr := t.Format("2006-01-02 15:04:05Z07:00")
fmt.Println("時間類型轉換: ", timeStr)
// 字符串轉時間
t2, _ := time.Parse("2006-01-02 15:04:05Z07:00", timeStr)
fmt.Println("字符串轉時間: ", t2)
fmt.Println("時間類型轉換: ", t2.Unix())
// uintptr // 指針 類型
u1 := user{}
// unsafe.Pointer 不能用於計算
uPtr := unsafe.Pointer(&u1)
namePtr := unsafe.Pointer((uintptr(uPtr) + unsafe.Offsetof(u1.Name)))
*(*string)(namePtr) = "nick"
fmt.Println(u1)
}
int 轉 int64 : 100
int64 轉 int: 100
int 轉 string: 100abc
string 轉 int: 100
int64 轉 int: 1010
字符串轉數字
1010 <nil>
字符串轉字節: [228 189 160 229 165 189 228 184 150 231 149 140]
字節轉字符串: 你好世界
字符串轉rune: [20320 22909 19990 30028]
rune轉字符串: 你好世界
rune轉字符串: 世
字符串轉 int32: [20320 22909 19990 30028]
接口類型轉換具體類型: 100 true
接口類型轉換具體類型: {like 0 { }} true
時間類型轉換: 2025-09-17 21:39:07+08:00
字符串轉時間: 2025-09-17 21:39:07 +0800 CST
時間類型轉換: 1758116347
{nick 0 { }}