1.整型:
1.1:整型分为两大类,有符号数和无符号数.一个整数的存在形式是一定长度的二进制数据.有符号数利用二进制最高位表示符号(正或负).除最高位以外的数值都用来表示数值大小.无符号数不会出现负数.所有二进制数都用来表示大小.
2.浮点型:
2.1:浮点型往往用来表示小数.分为单精度和双精度.关键字分为float32和float64.
2.2类型推导:
package main
import (
"fmt"
"reflect"
)
func main() {
var a float32
//未显示声明变量b的数据类型
b := 1.4
fmt.Println("显示声明,a的类型是: ", reflect.TypeOf(a))
//类型推导的结果与操作系统平台位数相关
fmt.Println("类型推导,b的类型是: ", reflect.TypeOf(b))
}
执行结果:
2.3浮点类型比较:
package main
import (
"fmt"
"math/big"
)
func main() {
floata := 3.14
floatb := 3.15
//用big.newFloat()floata.
result := big.NewFloat(floata).Cmp(big.NewFloat(floatb))
if result < 0 {
fmt.Println("a小于b")
}
if result == 0 {
fmt.Println("a等于b")
}
if result > 0 {
fmt.Println("a大于b")
}
}
执行结果:
3.布尔类型:
用bool关键字来声明一个布尔类型的变量.取值有true和false两种.
package main
import (
"fmt"
)
func main() {
//声明一个布尔类型变量的方式.
var success = true
if success {
fmt.Println(success)
}
var result bool
result = true
fmt.Println(result)
}
执行结果:
4.字符型:
字符型指的是单个字符,这里的字符不仅指ASCII码,也包含了中文及其他文言文字符.
package main
import (
"fmt"
)
func main() {
// 声明字符型变量.
var c = '中'
fmt.Println(c)
fmt.Printf("%c\n", c)
fmt.Println(string(c))
}
执行结果:
第一个输出的内容是20013,这个是字符'中'转换为UTF-8编码后的十进制数字.
5.字符串类型:
可以使用关键字string来声明一个字符串类型.
package main
import (
"fmt"
"reflect"
)
func main() {
var s string
s = "go语言字符串"
fmt.Println("s的内容为: ", s, "\n")
fmt.Println("s的类型为: ", reflect.TypeOf(s))
}
执行结果:
5.2:字符串内存中的存储:
package main
import (
"fmt"
)
func main() {
// 字符串在内存中的存储
var s string
s = "字符串"
len := len(s)
fmt.Println(len)
for i := range len {
fmt.Printf("%X ", s[i])
}
}
执行结果:
从输出结果看,变量长度为9.汉字一般用三个字节存储,所以为9.
5.3:rune处理:
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
// 字符串在内存中的存储
var s string
s = "字符串"
//rune处理文本
n := utf8.RuneCountInString(s)
fmt.Println("字符串的长度为:", n)
for _, c := range s {
fmt.Printf("%T, %X", c, c)
}
}
执行结果:
rune主要对应Unicode的字符.rune在表现形式上是一个数字(int32),所以打印出来是这样的.
6.数组类型:
6.1数组特点:
所有元素存储于连续内存.
数组可以直接利用位置索引来访问元素.
数组大小不可变更.
6.2声明数组变量:
package main
import (
"fmt"
)
func main() {
// 声明数组
a := [5]int{1, 2, 3, 4, 5}
fmt.Println(a)
}
6.3索引访问元素:
package main
import (
"fmt"
)
func main() {
// 声明数组
a := [5]int{1, 2, 3, 4, 5}
fmt.Println("索引位置2元素为: ", a[2])
a[2] = 0
fmt.Println(a)
}
执行结果:
6.4数组作为参数:
package main
import (
"fmt"
)
func main() {
// 声明数组
a := [5]int{1, 2, 3, 4, 5}
change(a)
fmt.Println(a)
}
func change(a [5]int) {
a[2] = 100
fmt.Println(a)
}
执行结果:
通过输出可以看出,传入函数的数组值并未发生改变.证明传入函数时实际上是复制了一个数组.
夜深了,常思己之不足.