Type Conversion in Go

List Topics
February 15, 2025
No Comments
4 min read

In Go, type conversion is the process of converting a variable from one data type to another. Since Go is a statically typed language, automatic type conversion (implicit conversion) is not supported. Instead, we must explicitly convert types when needed.

1. Basic Syntax of Type Conversion

To convert a variable from one type to another, use the following syntax:

Go
var newTypeVariable = targetType(originalVariable)

Example: Converting an int to float64

Go
package main

import "fmt"

func main() {
    var num int = 10
    var floatNum float64 = float64(num) // Explicit conversion

    fmt.Println("Integer:", num)
    fmt.Println("Converted to Float:", floatNum)
}

2. Integer to Floating-Point Conversion

Example: Converting int to float64

Go
var x int = 42
var y float64 = float64(x) // Converts int to float

🔹 int to float64 conversion works because floating-point numbers can store integer values.

3. Floating-Point to Integer Conversion

🔹 Important: Converting from float64 to int truncates the decimal part.

Example:

Go
var f float64 = 3.99
var i int = int(f) // Decimal part is removed
fmt.Println(i) // Output: 3

4. Integer to String Conversion

Using strconv.Itoa() for Integer to String

Go
import "strconv"

var num int = 123
var str string = strconv.Itoa(num) // Converts int to string
fmt.Println(str) // Output: "123"

5. String to Integer Conversion

🔹 Using strconv.Atoi() (returns two values: int and error)

Example:

Go
import "strconv"

var str string = "456"
num, err := strconv.Atoi(str)
if err == nil {
    fmt.Println(num) // Output: 456
}

6. String to Float Conversion

Example:

Go
import "strconv"

var str string = "3.14"
num, err := strconv.ParseFloat(str, 64)
if err == nil {
    fmt.Println(num) // Output: 3.14
}

7. Byte (Character) to String Conversion

🔹 A byte slice ([]byte) can be converted to a string.

Example:

Go
var bytes = []byte{72, 101, 108, 108, 111} // ASCII values of "Hello"
var str string = string(bytes)
fmt.Println(str) // Output: "Hello"

8. String to Byte Slice Conversion

Example:

Go
var str string = "Hello"
var bytes []byte = []byte(str)
fmt.Println(bytes) // Output: [72 101 108 108 111]

9. Rune to String Conversion

A rune represents a Unicode character in Go.

Example:

Go
var r rune = 'G'
var str string = string(r)
fmt.Println(str) // Output: "G"

10. Example Program with Different Type Conversions

Go
package main

import (
    "fmt"
    "strconv"
)

func main() {
    var num int = 100
    var floatNum float64 = float64(num)  // int to float
    var strNum string = strconv.Itoa(num) // int to string

    fmt.Println("Integer to Float:", floatNum)
    fmt.Println("Integer to String:", strNum)

    var str string = "250"
    intNum, _ := strconv.Atoi(str)  // string to int
    fmt.Println("String to Integer:", intNum)

    var floatStr string = "45.67"
    floatVal, _ := strconv.ParseFloat(floatStr, 64) // string to float
    fmt.Println("String to Float:", floatVal)
}

Conclusion

Go does not allow implicit type conversion – you must convert explicitly.
Use strconv package for string conversions.
Integer to float is straightforward, but float to integer truncates decimals.
String to integer or float requires strconv.Atoi() or strconv.ParseFloat().


Go টাইপ কনভার্সন: বিস্তারিত ব্যাখ্যা

Go-তে টাইপ কনভার্সন হল এক ধরনের ডাটা টাইপকে অন্য টাইপে রূপান্তর করার প্রক্রিয়া। যেহেতু Go একটি স্ট্যাটিক্যালি টাইপড ভাষা, তাই স্বয়ংক্রিয় (implicit) টাইপ কনভার্সন সমর্থন করে না। পরিবর্তে, আমাদের টাইপ explicitly (স্পষ্টভাবে) পরিবর্তন করতে হবে।

1. টাইপ কনভার্সনের মূল কাঠামো

Go-তে টাইপ পরিবর্তনের সাধারণ পদ্ধতি:

var নতুন_ভেরিয়েবল = টার্গেট_টাইপ(পুরানো_ভেরিয়েবল)

উদাহরণ: int থেকে float64 এ কনভার্সন

Go
package main

import "fmt"

func main() {
    var num int = 10
    var floatNum float64 = float64(num) // টাইপ পরিবর্তন

    fmt.Println("Integer:", num)
    fmt.Println("Float:", floatNum)
}

2. পূর্ণসংখ্যা (Integer) থেকে দশমিক সংখ্যা (Float) কনভার্সন

উদাহরণ:

Go
var x int = 42
var y float64 = float64(x) // int থেকে float এ রূপান্তর

🔹 int থেকে float64 কনভার্সন সম্ভব কারণ দশমিক সংখ্যা পূর্ণসংখ্যা সংরক্ষণ করতে পারে।

3. দশমিক সংখ্যা (Float) থেকে পূর্ণসংখ্যা (Integer) কনভার্সন

🔹 গুরুত্বপূর্ণ: float64 থেকে int-এ রূপান্তর করলে দশমিক অংশ বাদ পড়ে

উদাহরণ:

Go
var f float64 = 3.99
var i int = int(f) // দশমিক অংশ বাদ যাবে
fmt.Println(i) // আউটপুট: 3

4. Integer থেকে String কনভার্সন

strconv.Itoa() ফাংশন ব্যবহার করে Integer থেকে String

Go
import "strconv"

var num int = 123
var str string = strconv.Itoa(num) // int থেকে string
fmt.Println(str) // আউটপুট: "123"

5. String থেকে Integer কনভার্সন

🔹 strconv.Atoi() ফাংশন ব্যবহার করা হয় (এটি দুটি মান ফেরত দেয়: int এবং error)

উদাহরণ:

Go
import "strconv"

var str string = "456"
num, err := strconv.Atoi(str)
if err == nil {
    fmt.Println(num) // আউটপুট: 456
}

6. String থেকে Float কনভার্সন

উদাহরণ:

Go
import "strconv"

var str string = "3.14"
num, err := strconv.ParseFloat(str, 64)
if err == nil {
    fmt.Println(num) // আউটপুট: 3.14
}

7. Byte (ASCII) থেকে String কনভার্সন

🔹 Byte slice ([]byte) কে স্ট্রিংয়ে রূপান্তর করা যায়।

উদাহরণ:

Go
var bytes = []byte{72, 101, 108, 108, 111} // ASCII মান ("Hello")
var str string = string(bytes)
fmt.Println(str) // আউটপুট: "Hello"

8. String থেকে Byte Slice কনভার্সন

উদাহরণ:

Go
var str string = "Hello"
var bytes []byte = []byte(str)
fmt.Println(bytes) // আউটপুট: [72 101 108 108 111]

9. Rune (Unicode) থেকে String কনভার্সন

rune Go-তে ইউনিকোড ক্যারেক্টার সংরক্ষণ করতে ব্যবহৃত হয়।

উদাহরণ:

Go
var r rune = 'G'
var str string = string(r)
fmt.Println(str) // আউটপুট: "G"

10. বিভিন্ন টাইপ কনভার্সনের সাথে পূর্ণাঙ্গ প্রোগ্রাম

Go
package main

import (
    "fmt"
    "strconv"
)

func main() {
    var num int = 100
    var floatNum float64 = float64(num)  // int থেকে float
    var strNum string = strconv.Itoa(num) // int থেকে string

    fmt.Println("Integer to Float:", floatNum)
    fmt.Println("Integer to String:", strNum)

    var str string = "250"
    intNum, _ := strconv.Atoi(str)  // string থেকে int
    fmt.Println("String to Integer:", intNum)

    var floatStr string = "45.67"
    floatVal, _ := strconv.ParseFloat(floatStr, 64) // string থেকে float
    fmt.Println("String to Float:", floatVal)
}

সংক্ষেপে (Summary)

Go স্বয়ংক্রিয় টাইপ কনভার্সন করে না, একে explicitly (স্পষ্টভাবে) করতে হয়
String কনভার্সনের জন্য strconv প্যাকেজ ব্যবহার করা হয়
Integer থেকে Float সহজেই পরিবর্তন করা যায়, কিন্তু Float থেকে Integer দশমিক অংশ বাদ দেয়
String থেকে Integer বা Float পরিবর্তনের জন্য strconv.Atoi() বা strconv.ParseFloat() ব্যবহার করা হয়

©2025 Linux Bangla | Developed & Maintaind by Linux Bangla.