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 { }}