As an efficient and concise programming language, Golang is also very flexible in data conversion. This article will explore some data type conversion methods in Golang, as well as some considerations in practical applications.
1. Basic data type conversion
- Convert string type to int type
To convert characters to numbers, you can use the Atoi function provided by the strconv package. If the conversion fails, 0 is returned.
Sample code:
package main import ( "fmt" "strconv" ) func main() { str := "123" num, err := strconv.Atoi(str) if err != nil { fmt.Println("转换失败") } else { fmt.Println("转换结果为:", num) } }
- Convert int type to string type
To convert numbers to characters, you can use the Itoa function provided by the strconv package.
Sample code:
package main import ( "fmt" "strconv" ) func main() { num := 123 str := strconv.Itoa(num) fmt.Println("转换结果为:", str) }
- Convert string type to []byte type
Character to byte slice, you can use []byte() to force Type conversion.
Sample code:
package main import ( "fmt" ) func main() { str := "hello world" b := []byte(str) fmt.Println("转换结果为:", b) }
- []byte type conversion to string type
Byte slice conversion to character, you can use string() forced type conversion .
Sample code:
package main import ( "fmt" ) func main() { b := []byte{104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100} str := string(b) fmt.Println("转换结果为:", str) }
- int64 type conversion to int type
If the value of int64 is within the int representation range, you can use int() to force Type conversion. If it's out of scope, type assertion is required.
Sample code:
package main import ( "fmt" ) func main() { var i64 int64 = 1234567890 var i int if i64 > int64(i) { fmt.Println("超过int类型取值范围") } else { i = int(i64) fmt.Println("转换结果为:", i) } }
Note: When performing type conversion, be sure to pay attention to the matching of the data type range, otherwise data truncation or overflow may occur.
2. Custom data type conversion
For custom data types, we can implement string conversion by overloading the String method of the type. At the same time, we can also implement JSON format conversion by overloading the MarshalJSON and UnmarshalJSON methods of the type.
Sample code:
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func (p Person) String() string { return fmt.Sprintf("Name=%s, Age=%d", p.Name, p.Age) } func (p *Person) UnmarshalJSON(b []byte) error { type tmp Person t := &tmp{} err := json.Unmarshal(b, t) if err != nil { return err } p.Name = t.Name p.Age = t.Age return nil } func (p Person) MarshalJSON() ([]byte, error) { type tmp Person t := tmp(p) return json.Marshal(t) } func main() { p1 := &Person{"Tom", 18} // 转换为字符串 str := p1.String() fmt.Println("转换结果为:", str) // 转换为JSON格式 json1, _ := json.Marshal(p1) fmt.Println("转换结果为:", string(json1)) // 从JSON格式转换回来 str2 := `{"name":"Jerry","age":20}` var p2 Person json.Unmarshal([]byte(str2), &p2) fmt.Println("转换结果为:", p2) }
Through the above code, we can see that the conversion of custom types requires us to manually implement the conversion function so that it can be used normally.
3. Summary
This article summarizes the conversion methods of basic data types and custom data types in Golang, and also introduces some precautions. In practical applications, we need to flexibly choose different conversion methods according to specific needs in order to better process data.
The above is the detailed content of How to convert data in golang. For more information, please follow other related articles on the PHP Chinese website!

Effective Go application error logging requires balancing details and performance. 1) Using standard log packages is simple but lacks context. 2) logrus provides structured logs and custom fields. 3) Zap combines performance and structured logs, but requires more settings. A complete error logging system should include error enrichment, log level, centralized logging, performance considerations, and error handling modes.

EmptyinterfacesinGoareinterfaceswithnomethods,representinganyvalue,andshouldbeusedwhenhandlingunknowndatatypes.1)Theyofferflexibilityforgenericdataprocessing,asseeninthefmtpackage.2)Usethemcautiouslyduetopotentiallossoftypesafetyandperformanceissues,

Go'sconcurrencymodelisuniqueduetoitsuseofgoroutinesandchannels,offeringalightweightandefficientapproachcomparedtothread-basedmodelsinlanguageslikeJava,Python,andRust.1)Go'sgoroutinesaremanagedbytheruntime,allowingthousandstorunconcurrentlywithminimal

Go'sconcurrencymodelusesgoroutinesandchannelstomanageconcurrentprogrammingeffectively.1)Goroutinesarelightweightthreadsthatalloweasyparallelizationoftasks,enhancingperformance.2)Channelsfacilitatesafedataexchangebetweengoroutines,crucialforsynchroniz

InterfacesandpolymorphisminGoenhancecodereusabilityandmaintainability.1)Defineinterfacesattherightabstractionlevel.2)Useinterfacesfordependencyinjection.3)Profilecodetomanageperformanceimpacts.

TheinitfunctioninGorunsautomaticallybeforethemainfunctiontoinitializepackagesandsetuptheenvironment.It'susefulforsettingupglobalvariables,resources,andperformingone-timesetuptasksacrossanypackage.Here'showitworks:1)Itcanbeusedinanypackage,notjusttheo

Interface combinations build complex abstractions in Go programming by breaking down functions into small, focused interfaces. 1) Define Reader, Writer and Closer interfaces. 2) Create complex types such as File and NetworkStream by combining these interfaces. 3) Use ProcessData function to show how to handle these combined interfaces. This approach enhances code flexibility, testability, and reusability, but care should be taken to avoid excessive fragmentation and combinatorial complexity.

InitfunctionsinGoareautomaticallycalledbeforethemainfunctionandareusefulforsetupbutcomewithchallenges.1)Executionorder:Multipleinitfunctionsrunindefinitionorder,whichcancauseissuesiftheydependoneachother.2)Testing:Initfunctionsmayinterferewithtests,b


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

SublimeText3 English version
Recommended: Win version, supports code prompts!

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function
