Stories

Detail Return Return

類型轉換 - Stories Detail

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

Add a new Comments

Some HTML is okay.