How to Cast in Go

Hey! If you love Go and building Go apps as much as I do, let's connect on Twitter or LinkedIn. I talk about this stuff all the time!

Want to learn how to build better Go applications faster and easier? You can.

Check out my course on the Go Standard Library. You can check it out now for free.


Hello, fellow Go programmers! Today, we’re going to explore the world of type casting in Go. As developers, we often need to convert values from one type to another, and Go makes this easy with its powerful type casting capabilities.

In this article, we’ll show you how to cast in Go and demonstrate some of the useful features that make Go’s casting capabilities stand out. So, let’s get started!

First, let’s start with the basics. Type casting is the process of converting a value of one type to another type. In Go, we can cast values using the syntax T(v), where T is the type we want to convert the value to, and v is the value we want to convert. For example:

var i int32 = 42
var f float64 = float64(i)

This code creates an int32 variable i with the value 42, and a float64 variable f that is assigned the value of i converted to a float64. We use the float64() function to cast i to a float64.

But what if we need to cast a value to a type that doesn’t have a built-in conversion function? For that, we can use Go’s type assertion capabilities. Type assertion is the process of asserting that a value is of a certain type, and retrieving its underlying value. Here’s an example:

var v interface{} = "Hello, world!"
s, ok := v.(string)
if ok {
    fmt.Printf("The value is a string: %s\n", s)
} else {
    fmt.Printf("The value is not a string\n")
}

This code creates an interface variable v that contains the string value “Hello, world!”. We use the syntax v.(string) to assert that v is a string, and assign the result to the s variable. We also use the second return value of the type assertion, ok, to check whether the assertion succeeded. If ok is true, we print the value of s as a string. If ok is false, we print a message indicating that the value is not a string.

But that’s not all! Go’s type casting capabilities are extensive, and include many advanced features such as casting between struct types, casting to and from pointers, and casting between numeric types. With these powerful features, we can convert values of any type to any other type, and work with them in flexible and efficient ways.

Conclusion

Type casting in Go is a powerful and essential feature for any developer working with data of different types. With the syntax and features we’ve explored in this article, you’ll be able to cast values of any type to any other type with ease.

So, let’s get casting with Go!


Questions or comments? Reach out to me


Learn how to leverage the Go Standard Library like a PRO.

I just created a new course, The Go Standard Library, check it out!