Go笔记(2)数据类型
这篇记录语法。包含数据类型,数组、切片、string、map、map实现set功能、函数。
基本数据类型
- Go 语⾔不允许隐式类型转换,别名和原有类型也不能进⾏隐式类型转换。
- 类型的预定义值: math.MaxInt64, math.MaxFloat64, math.MaxUint32
- 不⽀持指针运算。
- string 是值类型,其默认的初始化值为空字符串。string 是只读的 byte 切片,len(str)=所包含的 byte 数。string 的 byte 数组可以存放任何数据。
- 函数可以有多个返回值,所有参数都是值传递(slice/map/channel会有传引用的错觉)
- 【解释5】切片本身是一个数据结构,背后对应一个数组,数据结构包含指向数组的指针,在传值的情况下,结构被复制到函数里,通过指针操作具体的值,操作的是同一块空间。
- slice 只能和[], nil 比较;map 只能和 nil 比较。可以使用 relect.DeepEqual。
简单语法示例
1 |
|
字符串连接-高效
尽量不使用 StringAdd,String 是个不可变对象,每次 add 之后需要生成一个新对象、开辟新的存储空间。
1.10 之前使用bytes.Buffer;1.10 以后可以使用 strings.Builder。
1 |
|
函数
条件判断
1 |
|
函数可变参数
1 |
|
函数式编程,传入一个函数,输出一个函数。
类似于装饰模式,给一个函数套一层,返回依旧是这个函数,作为功能的扩展。
1 |
|
package
- strconv 包提供了字符串与简单数据类型之间的类型转换功能。可以将简单类型转换为字符串,也可以将字符串转换为其它简单类型。
字符串转int:Atoi()
int转字符串:Itoa()
ParseTP类函数将string转换为TP类型:ParseBool()、ParseFloat()、ParseInt()、ParseUint()。因为string转其它类型可能会失败,所以这些函数都有第二个返回值表示是否转换成功
FormatTP类函数将其它类型转string:FormatBool()、FormatFloat()、FormatInt()、FormatUint()
AppendTP类函数用于将TP转换成字符串后 append 到一个 slice 中:AppendBool()、AppendFloat()、AppendInt()、AppendUint()
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!