Trong Go, type conversion (chuyển đổi kiểu) là quá trình chuyển đổi một biến từ kiểu dữ liệu này sang kiểu dữ liệu khác. Go hỗ trợ một số phương thức chuyển đổi kiểu, và bạn có thể sử dụng chúng để đảm bảo rằng các giá trị được xử lý đúng cách trong ngữ cảnh mà chúng được sử dụng. Dưới đây là một số thông tin chi tiết về type conversion trong Go:
Go cho phép bạn chuyển đổi giữa các kiểu số khác nhau như int
, int8
, int16
, int32
, int64
, float32
, float64
, và uint
. Dưới đây là ví dụ về cách chuyển đổi giữa các kiểu số:
package main import ( "fmt" ) func main() { var i int = 42 var f float64 = float64(i) // Chuyển từ int sang float64 fmt.Println("Giá trị int:", i) fmt.Println("Giá trị float64:", f) }
i
được chuyển đổi từ kiểu int
sang kiểu float64
.T(v)
để thực hiện chuyển đổi, trong đó T
là kiểu đích và v
là giá trị cần chuyển đổi.Go cũng cho phép chuyển đổi giữa các kiểu dữ liệu do người dùng định nghĩa, chẳng hạn như structs và interfaces. Đây là ví dụ về cách chuyển đổi giữa hai kiểu struct:
package main import "fmt" type Person struct { Name string Age int } type Employee struct { Name string Age int Position string } func main() { p := Person{Name: "Alice", Age: 30} // Chuyển đổi từ Person sang Employee e := Employee{Name: p.Name, Age: p.Age, Position: "Developer"} fmt.Println("Nhân viên:", e) }
Employee
từ một Person
bằng cách lấy các thuộc tính tương ứng.Go cho phép bạn chuyển đổi giữa các kiểu cụ thể và interface. Dưới đây là ví dụ về việc chuyển đổi từ một kiểu cụ thể sang interface và ngược lại:
package main import "fmt" type Shape interface { Area() float64 } type Circle struct { Radius float64 } func (c Circle) Area() float64 { return 3.14 * c.Radius * c.Radius } func main() { var s Shape s = Circle{Radius: 5} // Chuyển đổi Circle sang Shape fmt.Println("Diện tích hình tròn:", s.Area()) }
Circle
được gán cho biến s
có kiểu Shape
, tức là một interface.Chuyển đổi từ chuỗi sang các kiểu số cũng là một trường hợp phổ biến trong Go. Để thực hiện việc này, bạn thường sử dụng các hàm từ gói strconv
:
package main import ( "fmt" "strconv" ) func main() { s := "42" i, err := strconv.Atoi(s) // Chuyển đổi từ string sang int if err != nil { fmt.Println("Lỗi:", err) } else { fmt.Println("Giá trị int:", i) } }
strconv.Atoi
chuyển đổi một chuỗi thành số nguyên int
.Go hỗ trợ nhiều loại chuyển đổi kiểu, từ việc chuyển đổi giữa các kiểu số, chuyển đổi giữa các kiểu dữ liệu do người dùng định nghĩa, đến chuyển đổi sang và từ kiểu interface. Việc hiểu và sử dụng đúng các phương pháp chuyển đổi kiểu này là rất quan trọng trong quá trình phát triển ứng dụng, giúp bạn đảm bảo rằng các giá trị được xử lý một cách chính xác và hiệu quả.