Golang-基本数据类型

简介: Golang 中的基本数据类型介绍

Go语言有丰富的数据类型,出了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。

整型

整型分为两类:无符号、有符号;

其中uint就是byte型,int16就是C语言中short型,int64就是long型。

类型    描述
uint8    无符号 8位整型 (0255)
uint16    无符号 16位整型 (065535)
uint32    无符号 32位整型 (04294967295)
uint64    无符号 64位整型 (018446744073709551615)
int8    有符号 8位整型 (-128127)
int16    有符号 16位整型 (-3276832767)
int32    有符号 32位整型 (-21474836482147483647)
int64    有符号 64位整型 (-92233720368547758089223372036854775807)

特殊整型

类型    描述
uint    32位操作系统上就是uint3264位操作系统上就是uint64
int    32位操作系统上就是int3264位操作系统上就是int64
uintptr    无符号整型,用于存放一个指针

注意:在使用intuint类型时,不能假定它是32位或者64位,而要考虑intuint可能在不同平台上的差异。尤其是跨平台应用需注意。

注意事项:为了保持文件的结构不会受到不同编译目标平台字节长度的影响,不要使用intuint

八进制& 十六进制

Go语言中无法直接定义二进制数,关于八进制和十六进制数的示例如下:

package main

import "fmt"

// 整型
func main() {
   
    var i1 = 101 //类型推导,十进制数
    fmt.Printf("%d\n", i1)
    fmt.Printf("%b\n", i1)  //把十进制数转换成二进制
    fmt.Printf("%o\n", i1)  //把十进制数转换成八进制
    fmt.Printf("%ox\n", i1) //把十进制数转换成十六进制

    //八进制
    i2 := 077 //短变量声明
    fmt.Printf("%d\n", i2)

    //十六进制数
    i3 := 0x1234567abc
    fmt.Printf("%d\n", i3)

    //查看变量类型
    fmt.Printf("%T\n", i3)

    //声明int8类型的变量
    i4 := int8(9) //明确指定int8类型,否则为int类型
    fmt.Printf("%T\n", i4)
}

浮点型

Go语言支持两种浮点型数:float32float64。打印浮点数时,可以使用fmt包配合%f,代码如下:

package main

import (
    "fmt"
    "math"
)

func main() {
   
    f1 := 3.14159
    fmt.Printf("%T\n", f1) //默认Go语言中的小数都是float64
    f2 := float32(3.14159) //显示声明float32
    fmt.Printf("%T\n", f2) //此处f1的值不能赋值给f2,类型不同
    fmt.Printf("%f\n", math.Pi)
    fmt.Printf("%.2f\n", math.Pi)
}

输出:

D:\Go\src\github.com\hooo818\studygo\day01\05float>.\05float.exe
3.141593
3.14

复数

complex64complex128

复数有实部和虚部,complex64的实部和虚部都是32位,complex128的实部和虚部都是64位。

var c1 complex64
c1= 1+ 2i
var c2 complex128
c2= 3+ 4i
fmt.printf("%T\n", c1)
fmt.Printf("%T\n", c2)

布尔值

Go语言中以bool类型进行声明布尔类型数据,布尔类型数据只有true(真)false(假)两个值。

import "fmt"

func main() {
   
    //布尔类型
    b1 := true
    var b2 bool
    fmt.Printf("%T\n", b1)
    fmt.Printf("%T value:%v\n", b2, b2)
}

输出结果:

bool
bool value:false //默认值是false

注意:

  1. 布尔类型变量的默认值为false
  2. Go语言中不允许将整型强制转换为布尔型;
  3. 布尔型无法参与数值运算,也无法与其他类型进行转换。

字符串

Go语言中字符串以原生数据类型出现,使字符串就像使用它的原生数据类型int\bool\float32\float64等一样。Go语言里面的字符串的内部实现使用utf-8编码。字符串的值为双引号("...")中的内容。可以在Go语言的源码中直接添加非ASCII码,例如:

s1:= "Hello"
s2:= "你好"

注意:Go语言中字符串必须使用双引号("")包裹,Go语言中单引号('')包裹的字符是字符(单独的字母、汉字、符号表示一个字符

s:= "Hello Go 语言" //字符串
c1:= 'h' //字符
c2:= 'l' //字符
c3:= '洪' //字符,一个utf8汉字占3个字节

字符串转义符

转义符    含义
\r    回车符(返回行首)
\n    换行符(直接跳到下一行的同列位置)
\t    制表符
\'    单引号
\"    双引号
\\    反斜杠

例如:

package main

import "fmt"

//字符串

func main() {
   
    //\本来是具有特殊含义的,此时需要转义
    path := "\"D:\\Go\\src\\github.com\\hooo818\\studygo\\day01\\08string\""
    fmt.Println(path)

    s := "I'm  OK"
    fmt.Println(s)

    //多行字符串
    s2 := `
        床前明月光
        疑是地上霜
    `
    fmt.Println(s2)
}

输出结果为:

"D:\Go\src\github.com\hooo818\studygo\day01\08string"
I'm  OK

                床前明月光
                疑是地上霜

多行字符串

Go语言中要定义一个多行字符串时,就必须使用反引号字符(Esc键下方那个键);反引号间换行将被作为字符串中的换行,但是所有的转义字符无效,文本将会被原样输出

字符串常用操作

方法                                         介绍
len(str)                                  求长度
+或fmt.Sprintf                             拼接字符串
strings.Split                              分割
strings.contains                          判断是否包含
strings.HasPrefix,strings.HasSuffix          前缀/后缀判断
strings.Index(),strings.LastIndex()          子串出现的位置
strings.Join(a[]string, sep string)          join操作
package main

import (
    "fmt"
    "strings"
)

//字符串

func main() {
   
    //\本来是具有特殊含义的,此时需要转义
    path := "\"D:\\Go\\src\\github.com\\hooo818\\studygo\\day01\\08string\""
    fmt.Println(path)

    s := "I'm  OK"
    fmt.Println(s)

    //多行字符串
    s2 := `
        床前明月光
        疑是地上霜
    `
    fmt.Println(s2)

    //字符串相关操作
    fmt.Println(len(s)) //字符串长度

    name := "理想"
    world := "帅"

    ss := name + world //使用 "+"" 拼接字符串
    fmt.Println(ss)

    ss1 := fmt.Sprintf("%s%s", name, world) //使用fmt.Sprintf()拼接字符串,拼接后返回一个字符串
    fmt.Println(ss1)

    fmt.Printf("%s%s\n", name, world) //仅仅是打印在一起

    //分割
    ret := strings.Split(path, "\\")
    fmt.Println(ret) //["D: Go src github.com hooo818 studygo day01 08string"]

    //判断是否包含
    fmt.Println(strings.Contains(ss1, "理想")) //true

    //前缀、后缀判断
    fmt.Println(strings.HasPrefix(ss1, "理想")) //true
    fmt.Println(strings.HasSuffix(ss1, "帅"))  //true

    //判断字串出现的位置
    ss2 := "abcdefb"
    fmt.Println(strings.Index(ss2, "c"))  //2
    fmt.Println(strings.Index(ss2, "bc")) //1
    fmt.Println(strings.LastIndex(ss2, "b")) //6

    //拼接
    fmt.Println(strings.Join(ret, "+")) //"D:+Go+src+github.com+hooo818+studygo+day01+08string"
}

fmt占位符

package main

import "fmt"

//fmt 占位符
func main() {
   
    var n = 100
    fmt.Printf("%T\n", n) //查看类型
    fmt.Printf("%v\n", n) //查看变量的值
    fmt.Printf("%d\n", n) //十进制
    fmt.Printf("%b\n", n) //二进制
    fmt.Printf("%o\n", n) //八进制
    fmt.Printf("%x\n", n) //十六进制

    var s = "Let us Go"
    fmt.Printf("%s\n", s) //字符串
    fmt.Printf("%#v\n", s)//会给字符串加上引号
}
目录
相关文章
|
8月前
|
存储 Go 索引
Golang的数据类型详解
在Go编程语言中,数据类型是一种用来存储和操作数据的结构。Go具有丰富的内置数据类型,每种类型都具有自己的特性和用途。本篇博客将介绍Golang中常见的数据类型及其应用。
54 0
|
19天前
|
Go
Golang深入浅出之-Go数据类型详解:整型、浮点型与布尔型
【4月更文挑战第20天】Go语言基础数据类型包括整型(有符号和无符号,如`int8`、`uint32`)、浮点型(`float32`、`float64`)和布尔型(`true`、`false`)。理解它们的范围和特性,以及注意溢出、精度损失、类型转换等问题,是编写高效Go代码的关键。例如,整型溢出可能导致模运算,浮点数比较可能有精度误差,布尔型不应用于数值计算。了解这些易错点,能帮助写出更健壮的代码。
26 0
|
3月前
|
存储 机器学习/深度学习 程序员
Golang数据类型之基本数据类型
Golang数据类型之基本数据类型
38 1
|
7月前
|
存储 Java Go
100天精通Golang(基础入门篇)——第5天: Go语言中的数据类型学习
100天精通Golang(基础入门篇)——第5天: Go语言中的数据类型学习
55 0
|
10月前
|
Go
golang中for循环的遍历特点、数据类型和string转换
golang中for循环的遍历特点、数据类型和string转换
|
存储 Go Ruby
分门别类输入输出,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本数据类型和输入输出EP03
前文再续,Go lang和Python一样,基础数据类型有着很多分类,分门别类,一应俱全。它们对应着不同的使用场景,分别是:整形、浮点、字符、字符串、布尔等等。常用的基本数据类型经常会参与日常业务逻辑的运算、判断以及输入输出操作。
分门别类输入输出,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang基本数据类型和输入输出EP03
|
存储 机器学习/深度学习 程序员
Golang数据类型之基本数据类型
Golang数据类型之基本数据类型
|
Go Java
Golang数据类型和变量
数据类型 先来介绍一下Golang的数据类型。 布尔型 bool类型代表逻辑值,有真值true和假值false两种取值。 整数类型 整数类型有如下几种,这些整数都是有符号的类型,它们的无符号版本是类型名前面添加u,例如uint32。
745 0