整型分为如下两个大类: 按长度分为:int八、int1六、int3二、int64 对应的无符号整型:uint八、uint1六、uint3二、uint64数组
其中,uint8
就是咱们熟知的byte型,int16
对应C语言中的short型,int64
对应C语言中的long型。函数
func main(){ // 十进制 var a int = 10 fmt.Printf("%d \n", a) // 10 fmt.Printf("%b \n", a) // 1010 占位符%b表示二进制 // 八进制 以0开头 var b int = 077 fmt.Printf("%o \n", b) // 77 // 十六进制 以0x开头 var c int = 0xff fmt.Printf("%x \n", c) // ff fmt.Printf("%X \n", c) // FF // 变量的内存地址 fmt.Printf("%p \n", &a) // 0xc00004c080 占位符%p表示十六进制的内存地址
Go语言支持两种浮点型数:float32
和float64
。性能
func main() { fmt.Printf("%f\n", math.Pi) fmt.Printf("%.2f\n", math.Pi) }
Go语言中以bool类型进行声明布尔型数据,布尔型数据只有true(真)和false(假)两个值。ui
注意: 1. 布尔类型变量的默认值为false。 2. Go 语言中不容许将整型强制转换为布尔型. 3. 布尔型没法参与数值运算,也没法与其余类型进行转换。编码
Go 语言里的字符串的内部实现使用UTF-8编码。 字符串的值为双引号(")中的内容。
注意:在go中,''单引号中存放的是单个的字符,而不是字符串。code
组成每一个字符串的元素叫作“字符”,能够经过遍历或者单个获取字符串元素得到字符。 字符用单引号(’)包裹起来。内存
Go 语言的字符有如下两种: 1. uint8
类型,或者叫 byte
型,表明了ASCII码
的一个字符。 2. rune
类型,表明一个 UTF-8字符
。字符串
当须要处理中文、日文或者其余复合字符时,则须要用到rune类型。rune类型实际是一个int32。字符串处理
Go 使用了特殊的 rune 类型来处理 Unicode,让基于 Unicode 的文本处理更为方便,也可使用 byte 型进行默认字符串处理,性能和扩展性都有照顾。string
// 遍历字符串 func traversalString() { s := "hello沙河" for i := 0; i < len(s); i++ { //byte fmt.Printf("%v(%c) ", s[i], s[i]) } fmt.Println() for _, r := range s { //rune fmt.Printf("%v(%c) ", r, r) } fmt.Println() } // 结果为 104(h) 101(e) 108(l) 108(l) 111(o) 230(æ) 178(²) 153() 230(æ) 178(²) 179(³) 104(h) 101(e) 108(l) 108(l) 111(o) 27801(沙) 27827(河)
要修改字符串,须要先将其转换成[]rune或[]byte,完成后再转换为string。不管哪一种转换,都会从新分配内存,并复制字节数组。
func changeString() { s1 := "big" // 强制类型转换 byteS1 := []byte(s1) byteS1[0] = 'p' fmt.Println(string(byteS1)) s2 := "白萝卜" runeS2 := []rune(s2) runeS2[0] = '红' fmt.Println(string(runeS2)) }
Go语言中只有强制类型转换,没有隐式类型转换。 基本语法:T(表达式)
。
其中,T表示要转换的类型。表达式包括变量、复杂算子和函数返回值等. 好比计算直角三角形的斜边长。
func sqrtDemo() { var a, b = 3, 4 var c int // math.Sqrt()接收的参数是float64类型,须要强制转换 c = int(math.Sqrt(float64(a*a + b*b))) fmt.Println(c) }