fmt方法总结:
s := "hello,world!" fmt.Println(s) fmt.Printf("%T\n", s) // 查看变量的类型 fmt.Printf("%v\n", s) // 查看变量的值 fmt.Printf("%#v\n", s) // 变量的值加引号 fmt.Printf("%b\n", s) // 查看二进制
使用··反引号或者反斜杠\\去除特殊含义
字符串常用操作:
len长度 +或者fmt.Sprintf拼接 split分割 contains是否包含 index子串出现的位置 join
&:获取变量的内存地址
* :根据内存地址去除地址指向的值
每个变量都拥有地址,指针的值就是地址
对变量进行取址操作使用&操作符,可以获得这个变量的指针变量
指针变量的值是指指针内存地址
对指针变量进行取值操作使用*操作符,可以获得指针变量指向的原变量的值
每次获取指针地址都会发生变化
另一种创建指针方法new()
str := new(string)
*str = "qqq"
fmt.PrintIn(*str)
变量逃逸分析:
在某个方法之内创建的对象,除了在方法体之内被引用之外,还在方法体之外被其他变量引用到,这样在该方法执行完毕之后,无法被GC回收,由于其被其他变量引用。
正常的方法调用中,方法体中创建的对象将在执行完毕之后,回收其中创建的对象,无法回收,就成了逃逸。
1.如果分配到栈上,待函数返回资源就被回收了
2.如果分配到堆上,函数返回后交给gc来管理该对象资源
逃逸分析为了减少GC的压力。
内存分配机制:
内存管理子系统主要由两部分组成:内存分配器和GC,内存分配器主要解决小对象(小于等于32k的对象)分配管理和多线程内存分配。
堆:用来存放被动态分配的内存段,大小不固定,可动态扩张或缩减。
栈:存放程序暂时创建的局部变量,就是函数中大括号{}中定义的局部变量。
关键字:
break | default | func | interface | select |
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
Itoa():整型转字符串
Atoi():字符串转整型
ParseBool() 函数用于将字符串转换为 bool 类型的值,它只能接受 1、0、t、f、T、F、true、false、True、False、TRUE、FALSE,其它的值均返回错误
ParseInt() 函数用于返回字符串表示的整数值(可以包含正负号)
ParseUint() 函数的功能类似于 ParseInt() 函数,但 ParseUint() 函数不接受正负号
ParseFloat() 函数用于将一个表示浮点数的字符串转换为 float 类型
FormatBool() 函数可以一个 bool 类型的值转换为对应的字符串类型