关于Golang面试宝典
最近几年,Go的热度持续飙升,国内外很多大公司都在大规模的使用Go。Google是Go语言诞生的地方,其他公司如Facebook、腾讯、阿里、字节跳动、百度、京东、小米等都在拥抱和转向Go。Go语言的开源项目也非常多,如kubernetes、docker、etcd。
随着市场对Go语言人才需求的增长,很多开发者都投入了Go语言的怀抱。本系列文章将以第一视角与大家一同开始Golang的面试之路,希望大家能够有所收获,拿下心仪的offer。
Go语言基本数据类型转换
Golang和其它一些语言不同,在不同类型的变量间赋值时,不能自动转换,需要显式转换
数值类型之间转换
可使用表达式T(v)将值v转换为类型T,如:
var i int8 = 1
var n1 float32 = float32(i)
var n2 int64 = int64(i)
注意:在转换过程中,如果存在数值溢出(如int64的128转成int8),编译时不会报错,但是转换的结果按照溢出处理,和我们希望的结果不一样,因此在转换时,需要考虑数值范围。
基本类型转换为字符串类型
方式1:使用fmt.Sprintf
func Sprintf(format string, a ...interface{}) string
fmt包中的Sprintf方法可以根据format参数生成格式化的字符串并返回该字符串,详细使用说明见:https://golang.google.cn/pkg/fmt/
示例:
var i = 12.3
var s1 = fmt.Sprintf("%v", i)
fmt.Printf("s1对应的类型:%T,对应的值%v\n", s1, s1)
方式2:使用strconv
func FormatBool(b bool) string
func FormatComplex(c complex128, fmt byte, prec, bitSize int) string
func FormatFloat(f float64, fmt byte, prec, bitSize int) string
func FormatInt(i int64, base int) string
func FormatUint(i uint64, base int) string
示例:
var i = 12.3
var s1 = strconv.FormatFloat(i, 'f', 10, 64)
fmt.Printf("s1对应的类型:%T,对应的值%v\n", s1, s1)
字符串类型转换为其他类型
字符串类型可使用strconv包提供的方法转换为其他类型:
func ParseBool(str string) (bool, error)
func ParseComplex(s string, bitSize int) (complex128, error)
func ParseFloat(s string, bitSize int) (float64, error)
func ParseInt(s string, base int, bitSize int) (i int64, err error)
func ParseUint(s string, base int, bitSize int) (uint64, error)
示例:
var i = "12.34"
n1, err := strconv.ParseFloat(i, 64)
if err != nil {
fmt.Printf("conv error: %+v", err)
}
fmt.Printf("n1对应的类型:%T,对应的值%v\n", n1, n1)