第 4 节:基础数据类型

4:基础数据类型

类型 名称 长度 零值 说明
bool 布尔类型 1 false 其值不为真即为假,不可以用数字代表true或false
byte 字节型 1 0 uint8别名
int, uint 整型 4或8 0 有符号32位或无符号64位
int8 整型 1 0 -128 ~ 127,
uint8 整型 1 0 0 ~ 255
int16 整型 2 0 -32768 ~ 32767,
uint16 整型 2 0 0 ~ 65535
int32 整型 4 0 -2147483648 到 2147483647
uint32 整型 4 0 0 到 4294967295(42亿)
int64 整型 8 0 -9223372036854775808到 92233720368547758070
uint64 整型 8 0 到 18446744073709551615(1844京)
float32 浮点型 4 0.0 小数位精确到7位
float64 浮点型 8 0.0 小数位精确到15位
string 字符串 "" utf-8字符串

下面我们看一下几个非常重要的类型,其它类型随着课程的深入,后面会给大家讲解到

1:布尔类型

在计算机中,我们用什么数据类型来表示一句话的对错,例如:在计算机中描述张三(20岁)比李四(18)小,这句话的结果?
布尔类型的变量取值要么是真(true),要么是假(false),用bool关键字来进行定义。示例如下:


package main
// 09
import "fmt"

func main() {
    //布尔类型  值为true 或者为 false
    //var a bool //默认值为false
    ////bool类型一般用于条件判断
    //a = true
    //fmt.Println(a)

    //自动推到类型创建bool类型变量
    a := false //bool

    //a=true
    //fmt.Println(a)
    //%T是一个占位符 表示输出一个变量对应的数据类型
    fmt.Printf("%T\n", a)
    b := 10 //int
    fmt.Printf("%T\n", b)
    c := 3.14 //float64
    fmt.Printf("%T\n", c)
    d := "你个锤子"//string
    fmt.Printf("%T", d)
}

布尔类型主要用于后面讲解的条件判断,关于条件判断,我们在这里先举一个生活中的案例,大家可以理解一下:

title

2:浮点型

package main

import "fmt"

func main0101() {

    //浮点型数据 分为 单精度浮点型 float32(小数位数为7位) 双精度浮点型 float64(小数位数为15位)
    //float64 比 float32 更精准
    //var a float64=1223.456
    ////保留六位小数数据会更精准
    //fmt.Printf("%f\n",a)
    //var a float32 =3.14
    //
    //fmt.Printf("%.2f",a)

    //通过自动推到类型创建的浮点型变量 默认类型为float64
    a := 123.456
    fmt.Printf("%T\n", a)
}

//买黄瓜 3.2一斤 买3斤

func main() {
    price := 3.2
    var weight float64

    fmt.Scan(&weight)

    sum := price * weight

    //fmt.Println(sum)
    fmt.Printf("%.2f",sum)
}

3:字符类型

package main

import "fmt"

func main0201() {
    //byte字符类型 同时也是uint8的别名
    var a byte = 'a'

    //所有的字符都对应ASCII中的整型数据
    //'0'对应的48  'A'对应的65 'a' 对应的97
    //fmt.Println(a)

    //%c是一个占位符 表示打印输出一个字符
    fmt.Printf("%c\n", a)
    fmt.Printf("%c\n", 97)

    fmt.Printf("%T\n", a)
    var b byte = '0' //字符0  对应的ASCII值为为48

    fmt.Printf("%c\n", 48)
    fmt.Printf("%c\n", b)
}
func main0202() {

    var a byte = 'a'
    //将小写字母转成大写字母输出
    fmt.Printf("%c", a-32)
}

func main() {
    //转义字符 \n 换行

    //var a byte = '\n'
    //\0  对应的ASCII 值为0 用于字符串的结束标志
    //\t 对应的ASCII 值为9 水平制表符 一次跳八个空格
    var a byte ='\t'
    //fmt.Println(a)
    fmt.Printf("%c",a)

}

4:字符串类型

package main

import "fmt"

func main0301() {
    //var a string = "你好"
    ////fmt.Println(a)
    //fmt.Printf("%s",a)
    //a:="你好"
    //fmt.Println(a)
    //fmt.Printf("%s",a)
    //双引号引起来的称为字符串
    ch := 'a'
    str := "a" //'a''\0'字符串结束标志

    fmt.Printf("%c\n", ch)
    //%s打印字符串打印到\0之前的内容
    fmt.Printf("%s\n", str)

}

func main0302() {
    // 字符与字符串区别
    //len 函数  用来计算字符串中字符个数 不包含\0  返回值为int类型
    //a := "hello"
    //在go语言中一个汉字占3个字符  为了和linux进行统一处理
    a := "bokedu"
    var count int
    count = len(a)
    fmt.Println(count)

}
func main() {
    str1 := "澳门在线赌场上线了"
    str2 := "性感荷官在线发牌"

    //字符串连接  +
    str3 := str1 + str2

    fmt.Println(str3)

}

5:字符与字符串区别

上面的代码中已经实现

6:fmt包的格式化输出输入

我们前面在输出与输入字符串类型,字符类型,整型等都指定了对应的格式化,那么go语言中还有哪些格式化呢?

格式 含义
%% 一个%字面量
%b 一个二进制整数值(基数为2),或者是一个(高级的)用科学计数法表示的指数为2的浮点数
%c 字符型。可以把输入的数字按照ASCII码相应转换为对应的字符
%d 一个十进制数值(基数为10)
%e 以科学记数法e表示的浮点数或者复数值
%E 以科学记数法E表示的浮点数或者复数值
%f 以标准记数法表示的浮点数或者复数值
%g 以%e或者%f表示的浮点数或者复数,任何一个都以最为紧凑的方式输出
%G 以%E或者%f表示的浮点数或者复数,任何一个都以最为紧凑的方式输出
%o 一个以八进制表示的数字(基数为8)
%p 以十六进制(基数为16)表示的一个值的地址,前缀为0x,字母使用小写的a-f表示
%q 使用Go语法以及必须时使用转义,以双引号括起来的字符串或者字节切片[]byte,或者是以单引号括起来的数字
%s 字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0‘结尾,这个'\0'即空字符)
%t 以true或者false输出的布尔值
%T 使用Go语法输出的值的类型
%U 一个用Unicode表示法表示的整型码点,默认值为4个数字字符
%v 使用默认格式输出的内置或者自定义类型的值,或者是使用其类型的String()方式输出的自定义值,如果该方法存在的话
%x 以十六进制表示的整型值(基数为十六),数字a-f使用小写表示
%X 以十六进制表示的整型值(基数为十六),数字A-F使用小写表示
%% 一个%字面量
%b 一个二进制整数值(基数为2),或者是一个(高级的)用科学计数法表示的指数为2的浮点数
%c 字符型。可以把输入的数字按照ASCII码相应转换为对应的字符
%d 一个十进制数值(基数为10)
%e 以科学记数法e表示的浮点数或者复数值
%E 以科学记数法E表示的浮点数或者复数值
%f 以标准记数法表示的浮点数或者复数值
%g 以%e或者%f表示的浮点数或者复数,任何一个都以最为紧凑的方式输出
%G 以%E或者%f表示的浮点数或者复数,任何一个都以最为紧凑的方式输出
%o 一个以八进制表示的数字(基数为8)
%p 以十六进制(基数为16)表示的一个值的地址,前缀为0x,字母使用小写的a-f表示
%q 使用Go语法以及必须时使用转义,以双引号括起来的字符串或者字节切片[]byte,或者是以单引号括起来的数字
%s 字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0‘结尾,这个'\0'即空字符)
%t 以true或者false输出的布尔值
%T 使用Go语法输出的值的类型
%U 一个用Unicode表示法表示的整型码点,默认值为4个数字字符
%v 使用默认格式输出的内置或者自定义类型的值,或者是使用其类型的String()方式输出的自定义值,如果该方法存在的话
%x 以十六进制表示的整型值(基数为十六),数字a-f使用小写表示
%X 以十六进制表示的整型值(基数为十六),数字A-F使用小写表示
package main

import "fmt"

func main0401() {

    //fmt.Printf("35%%")

    //十进制整型数据
    a := 123

    //%b 占位符 打印一个数据的二进制格式
    fmt.Printf("%b\n", a)
    //%o 占位符 打印一个数据的二进制格式
    fmt.Printf("%o\n", a)
    //%x %X 占位符 十六进制
    //10-15用a-f表示 %x  a-f  %X A-F
    fmt.Printf("%x\n", a)
    fmt.Printf("%X\n", a)
    //十进制
    fmt.Println(a)
    fmt.Printf("%d\n", a)

}

func main0402() {
    //十进制数据
    var a int = 10
    //八进制数据  八进制数据是以0开头  最大值为7
    var b int = 010
    //十六进制数据  十六进制数据是以0x开头
    //10-15用a-f表示 %x  a-f  %X A-F
    var c int = 0xABC

    //二进制  不能在go语言中直接表示

    fmt.Println(a)
    fmt.Println(b)
    fmt.Println(c)

}

func main() {
    //''引起来的智能存储一个字符
    ch := 'a' //'\n'
    str := "瓜娃子"
    fmt.Printf("%c\n", ch)
    fmt.Printf("%s\n", str)
    fmt.Println(ch)

    //%p 占位符 打印是一个变量对应的内存地址 是以无符号十六进制整型表示
    fmt.Printf("%p\n", &ch)
    fmt.Printf("%p\n", &str)

    a := false

    //%t占位符 打印bool类型的值
    fmt.Printf("%t\n",a)
    fmt.Println(a)
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
嗨,我是波波。曾经创业,有收获也有损失。我积累了丰富教学与编程经验,期待和你互动和进步! 公众号:上海PHP自学中心 付费知识星球:破解面试:程序员的求职导师
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
司机 @ 欣昊玉
文章
273
粉丝
339
喜欢
557
收藏
1103
排名:64
访问:12.1 万
私信
所有博文
社区赞助商