golang-基础知识点笔记
Go init函数详解
- 即使包被导入多次,初始化只需要一次。
- init函数不需要传入参数,也不会返回任何值。与main相比而言,init没有被声明,因此也不能被引用
Go包导入规则的副作用
Go要求非常严格,不允许引用不使用的包。但是有时你引用包只是为了调用init函数去做一些初始化工作。此时空标识符(也就是下划线)的作用就是为了解决这个问题。
import _ "image/png"
golang中&^位清空操作
c = a &^ b
:功能同a&(^b)
相同,将运算符左边数据相异的位保留,相同位清零。
数据类型转换(strconv包)
Go不会对数据进行隐式的类型转换,只能手动去执行转换操作。
strconv包提供了简单数据类型之间的类型转换功能。可以将简单类型转换为字符串,也可以将字符串转换为其它简单类型。
- 字符串转int:
Atoi()
- int转字符串:
Itoa()
- ParseTP类函数将string转换为TP类型:
ParseBool()、ParseFloat()、ParseInt()、ParseUint()
。因为string转其它类型可能会失败,所以这些函数都有第二个返回值表示是否转换成功 - 其它类型转string类型:
FormatBool()、FormatFloat()、FormatInt()、FormatUint()
- AppendTP类函数用于将TP转换成字符串后append到一个slice中:
AppendBool()、AppendFloat()、AppendInt()、AppendUint()
- ParseFloat()只能接收float64类型的浮点数
func ParseInt(s string, base int, bitSize int) (i int64, err error) func ParseUint(s string, base int, bitSize int) (uint64, error)
ParseInt()和ParseUint()有3个参数
bitSize
参数表示转换为什么位的int/uint,有效值为0、8、16、32、64。当bitSize=0的时候,表示转换为int或uint类型。例如bitSize=8表示转换后的值的类型为int8或uint8。
base
参数表示以什么进制的方式去解析给定的字符串,有效值为0、2-36。当base=0的时候,表示根据string的前缀来判断以什么进制去解析:0x
开头的以16进制的方式去解析,0
开头的以8进制方式去解析,其它的以10进制方式解析。
FormatInt()和FormatUint()有两个参数:
func FormatInt(i int64, base int) string func FormatUint(i uint64, base int) string
fmt.Println(strconv.Atoi("1")) fmt.Println(strconv.Itoa(132)) fmt.Println(strconv.ParseBool("true")) fmt.Println(strconv.ParseInt("12304", 8, 64)) fmt.Println(strconv.ParseInt("-42", 10, 64)) fmt.Println(strconv.FormatInt(-42, 16)) // 声明一个slice b10 := []byte("int (base 10):") b10 = strconv.AppendInt(b10, -42, 10) fmt.Println(string(b10)) b16 := []byte("int (base 16):") b16 = strconv.AppendInt(b16, -42, 16) fmt.Println(string(b16))