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)//会给字符串加上引号
}
目录
相关文章
|
存储 Go 索引
Golang的数据类型详解
在Go编程语言中,数据类型是一种用来存储和操作数据的结构。Go具有丰富的内置数据类型,每种类型都具有自己的特性和用途。本篇博客将介绍Golang中常见的数据类型及其应用。
85 0
|
3月前
|
存储 Go
Golang语言基础数据类型之浮点型
这篇文章介绍了Go语言中浮点型数据的概念、存储方式、表示方法以及精度问题,并通过示例代码展示了如何声明和使用浮点型变量。
51 7
|
3月前
|
Go
Golang语言基础数据类型之整型
这篇文章详细介绍了Go语言中的整型数据类型,包括各种有符号和无符号整数类型、特殊整型如int、uint、uintptr、rune和byte,以及如何在程序中使用这些类型和它们所占的内存空间大小。
39 7
|
3月前
|
Go
Golang语言基础数据类型之复数complex
这篇文章介绍了Go语言中复数(complex)数据类型的概念、表示方法和使用示例,包括complex64和complex128两种类型的复数及其在不同领域的应用场景。
71 5
|
3月前
|
Go
Golang语言基础数据类型之布尔值
这篇文章介绍了Go语言中布尔值(bool)数据类型的基本概念、特性和使用示例,包括布尔值的声明、逻辑运算和在程序流程控制中的应用。
48 3
|
3月前
|
Go
Golang语言基本数据类型默认值及字符串之间互相转换案例
这篇文章讲解了Golang语言中基本数据类型的默认值、类型转换的概述以及整型、浮点型、字符串之间的相互转换案例,包括如何将基本数据类型转换为字符串类型和字符串类型转换为基本数据类型,以及字符串与字节切片之间的转换。
33 2
|
3月前
|
Go
Golang语言基础数据类型之字符串常用的操作
这篇文章介绍了Golang语言中字符串的定义、常用操作,包括字符串长度查看、遍历、类型转换、子串统计、比较、查找位置、替换、切割、大小写转换、剔除字符、前缀后缀判断、拼接、子串包含判断以及字符串join操作,同时提供了官方文档的查看方法。
32 1
|
3月前
|
Go
Golang语言数据类型分类及进制转换案例
这篇文章详细介绍了Go语言中数据类型的分类、进制转换的概念和实例,以及数字字面量语法,还涉及了原码、反码和补码的相关知识。
26 0
Golang语言数据类型分类及进制转换案例
|
3月前
|
Go
Golang语言高级数据类型之指针篇
这篇文章详细讲解了Golang语言中的指针概念、指针地址和类型、定义指针变量、指针的细节操作、指针传值,以及内置函数new和make的用法和它们之间的区别。
33 0
|
3月前
|
Go
Golang语言基础数据类型之字符类型
这篇文章介绍了Go语言中的字符类型,包括字符概述、byte和rune类型的定义、转义字符的使用以及如何遍历字符串获取字符的示例。
20 0