Golang数据类型

编程之家收集整理的这篇文章主要介绍了Golang数据类型编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Go语言中拥有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。Go 语言的基本类型和其他语言大同小异。

1、基础数据类型

1.1、整型

整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint16、uint32、uint64

其中,uint8就是我们熟知的byte型,int16对应C语言中的short型,int64对应C语言中的long型。

类型 描述
uint8 无符号 8位整型 (0 到 255)
uint16 无符号 16位整型 (0 到 65535)
uint32 无符号 32位整型 (0 到 4294967295)
uint64 无符号 64位整型 (0 到 18446744073709551615)
int8 有符号 8位整型 (-128 到 127)
int16 有符号 16位整型 (-32768 到 32767)
int32 有符号 32位整型 (-2147483648 到 2147483647)
int64 有符号 64位整型 (-9223372036854775808 到 9223372036854775807)

我们可以借助fmt函数一个整数以不同进制形式展示

package main
 
import "fmt"
 
func main(){
	// 十进制
	var a int = 10
	fmt.Printf("%d \n",a)  // 10
	fmt.Printf("%b \n",a)  // 1010  占位符%b表示二进制
 
	// 八进制  以0开头
	var b int = 066
	fmt.Printf("%o \n",b)  // 66  
 
	// 十六进制  以0x开头
	var c int = 0xff
	fmt.Printf("%x \n",c)  // ff
	fmt.Printf("%X \n",c)  // FF
}

占位符标志

%T  // 查看变量的类型
%v  // 查看变量的值
%b  // 查看二进制
%d  // 查看十进制
%o  // 查看八进制
%x  // 查看十六进制
%s  // 查看字符串

1.2、特殊整型

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

1.3、浮点型

类型 描述
float32 32 位浮点型
float64 64 位浮点型
complex64 32 位实数和虚数
complex128 64 位实数和虚数

2、字符串

Go语言中的字符串以原生数据类型出现,使用字符串就像使用其他原始数据类型(int、bool、float32等)一样。Go语言的字符串的内部实现使用UTF-8编码,并且是用双引号""包裹的。

// 字符串
s := "Hello 沙河"
// 单独的字母、汉字、符号表示一个字符
c1 := 'h'
c2 := '1'
c3 := '沙'
// 字节:1字节=8Bit(8个二进制位)
// 1个字符'A'=1个字节
// 1个utf8编码的汉字'沙'=一般占3个字节

多行的字符串

// 反引号里的东西原样输出
a1 :=`第一行
第二行
第三行
`

字符串常用操作

// len()  ->打印字符长度
s1 := "你好"
fmt.Println(len(s1))

// +  or  占位符  or Springtf ->字符串拼接
name := "理想"
world := "大帅比"
fmt.Println(name + world)
fmt.Printf("%s%s",name,world)

ss1 := fmt.Sprintf("%s%s",world) // 该方法会直接返回字符串拼接完成后的变量,需要赋值
fmt.Println(ss1)

// strings.Split ->字符串分割
s2 := "D:/a/b/c"
ret := strings.Split(s2,"/")
fmt.Println(ret)  // [D: a b c]

// strings.Contains ->判断是否包含
s3 := "HelloWorld"
ret := strings.Contains(s3,"W")
fmt.Println(ret) // true

// strings.HasPrefix and strings.HasSuffix  ->前缀/后缀 判断
s3 := "HelloWorld"
fmt.Println(strings.HasPrefix(s3,"H")) // true
fmt.Println(strings.HasSuffix(s3,"x")) // false

// strings.Index and strings.LastIndex ->子串出现的位置
s4 := "abcdefge"
fmt.Println(strings.Index(s4,"c")) // 2
fmt.Println(strings.LastIndex(s4,"e")) // 4

// strings.Join ->join操作
s2 := "D:/a/b/c"
ret := strings.Split(s2,"/")
fmt.Println(strings.Join(ret,"+")) // D:+a+b+c

// strings.Replace ->字符串替换
s1 := "hellooowa"
s1 = strings.Replace(s1,"he","wo",2)
fmt.Println(s1) // wollooowa

// strings.ToLower or strings.toupper ->转为小写/大写
s1 := "jack"
s1 = strings.ToLower(s1)
fmt.Println(s1) // jack

s2 := "JACK"
s2 = strings.toupper(s2)
fmt.Println(s2) // JACK

// strings.Trimspace ->去掉字符串首和尾的空格
s1 := " sk sk "
s1 = strings.Trimspace("sksk")
fmt.Println(s1)  // sksk

// strings.Trim ->去掉字符串首和尾的指定字符
s1 := "hello world"
s1 = strings.Trim(s1,"hd")
fmt.Println(s1) // ello worl

// strings.TrimLeft ->去掉字符串首部的指定字符
s1 := "hello world"
s1 = strings.TrimLeft(s1,"he")
fmt.Println(s1) // llo world

// strings.TrimRight ->去掉字符串尾部的指定字符
s1 := "hello world"
s1 = strings.TrimRight(s1,"ld")
fmt.Println(s1) // hello wor

// strconv.Itoa ->把一个整数转成成字符串
str1 := strconv.Itoa(1000)
fmt.Printf("%T",str1)  // string

// strconv.Atoi ->把一个字符串转换成整数
str1 := "1000"
number,err := strconv.Atoi(str1)
if err != nil{
	fmt.Println("can not conver to int",err)
}else{
	fmt.Println(number) // 1000
}

修改字符串
修改字符串,需要先将其转换成[]run[]byte,完成后再转换为string,无论哪种转换都会重新分配内存。

s2 := "白萝卜" // [白 萝 卜]
s3 := []rune(s2) // 把字符串强制转换成了一个rune切片
s3[0] = '红'
fmt.Println(string(s3)) // 把rune切片强制转换成字符串

3、数据类型转换

package main

import "fmt"

func main(){
	var a int8 = 100
	var b int16 = int16(a) // 将int8转换成int16
	fmt.Printf("a=%T b=%T\n",a,b)
}

输出结果

a=int8 b=int16

总结

以上是编程之家为你收集整理的Golang数据类型全部内容。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给好友。

Golang语言有哪些优势?学Go语言有什么好处?Go一种非常高效的语言,高度支持并发性。Go为大数据、微服务、并发而生的一种编程语言。Go语言语法简单,包含了类C语法,Go语言容易学习,一个普通的大学生花几个星期就能
1、时间格式化 基于模式的布局进行时间格式化和解析 执行上面代码,将得到以下输出结果 2、字符串格式化 3、正则表达式 执行上面代码,将得到以下输出结果 4、Json 执行上面代码,将得到以下输出结果
1、goroutine线程 goroutine是一个轻量级的执行线程。假设有一个函数调用f(s),要在goroutine中调用此函数,请使用go f(s)。 这个新的goroutine将与调用同时执行
1、可变参数 示例代码如下: 执行上面代码,将得到以下输出结果 2、匿名函数 示例代码如下: 执行上面代码,将得到以下输出结果 3、递归函数 示例代码如下: 这个fact()函数实际上是调用它自己本身
由于之前看过其他脚本语言,此时看服务器端语言go语法时也短短用了半天的时间,如图1所示,是个人学习go语法的目录截图,学习网址:菜鸟网站,为了个人方便学习和记忆,因此写下本篇文章,在本篇文章里我主要是
go语言使用goroutines和channel实现一个工作池相当简单。使用goroutines开指定书目线程,通道分别传递任务和任务结果。简单的线程池代码如下: 执行上面代码,将得到以下输出结果 看
1、默认排序 使用sort包进行排序。排序是就地排序,因此它会更改给定的切片,并且不返回新的切片。 执行上面代码,将得到以下输出结果 从上述代码可知,排序不同类型切片,调用不同接口,排序时直接对参数进
一、Golang下载不同的安装环境1.下载地址https://golang.google.cn/dl/2.windos32位系统安装包下在文件go1.19.1.windows-386.msi3.windos32位系统解压安装下在文件go1.19.1.windows-386.zip4.windos64位系统安装包下...