固原网站制作,石家庄招聘网最新招聘,营销型企业网站项目策划表,如何设计制作一般企业网站1. go语言的数据类型简介
golang的数据类型分为两大类#xff0c;一类是基本数据类型和符合数据类型#xff1b;
按照传递的内容分#xff1a;传递本身数据和传递地址#xff1b;
golang和java很相似#xff0c;都是值传递#xff0c;不过分为传递的值和传递的地址一类是基本数据类型和符合数据类型
按照传递的内容分传递本身数据和传递地址
golang和java很相似都是值传递不过分为传递的值和传递的地址传递地址的叫做引用传递
2.基本数据类型
基本数据类型有整数、浮点数、布尔型、字符
2.1 整数类型
1介绍
类型范围占用空间有无符号int8-2^7到2^7-11个字节有int16-2^15到2^15-12个字节有int32-2^31到2^31-14个字节有int64-2^63到2^63-18个字节有uint80到2^8-11个字节无uint160到2^16-12个字节无uint320到2^32-14个字节无uint640到2^64-18个字节无 注意 在使用 int 和 uint 类型时不能假定它是 32 位或 64 位的整型而是考虑 int 和 uint可能在不同平台上的差异。 注意事项 实际项目中整数类型、切片、 map 的元素数量等都可以用 int 来表示。 在涉及 到二进制传输、为了保持文件的结构不会受到不同编译目标平台字节长度的影响不要使 用 int 和 uint 。
2整数常见的进制以及占位符表示
package mainimport fmtfunc main() {//二进制a : 0b1001fmt.Printf(%d \n, a)fmt.Printf(%b \n, a)//十进制b : 0377fmt.Printf(%o \n, b)//十六进制c : 0xfffmt.Printf(%d \n, c)// 显示数据的数据类型fmt.Printf(%T \n,c)
}2.2 浮点数
类型存储空间范围float324字节-3.403e383.403e38float648字节-1.798e3081.798e308
import (fmtunsafe
)func main() {var float1 float32 1.23fmt.Printf(%f \n, float1) //默认保留6位小数fmt.Printf(%.2f \n, float1)//float32 占用4位并且类型位float32var a float32 3.14fmt.Printf(值为%v--%f,类型%T\n, a, a, a)fmt.Println(unsafe.Sizeof(a)) //占4个字节//float64 占用8位并且类型位float64var b float64 1.23fmt.Printf(值为%v--%f,类型%T\n, b, b, b)fmt.Println(unsafe.Sizeof(b))}
Golang 中 float 精度丢失问题 几乎所有的编程语言都有精度丢失这个问题这是典型的二进制浮点数精度损失问题在定
长条件下二进制小数和十进制小数互转可能有精度丢失。这个问题在银行系统中特别致命。
如何解决在java中有一个叫做bigdecimal的类可以解决这个问题在golang中也有一个decimal可以解决这个问题
package mainimport (fmtgithub.com/shopspring/decimal
)func main() {decimal1, err : decimal.NewFromString(1129.6)decimal2, err : decimal.NewFromString(100)result : decimal1.Mul(decimal2)if err ! nil {fmt.Println(转化失败, err)}fmt.Println(result)
}
2.3 布尔类型
var fl false
if f1 {fmt.Println(true)
} else {fmt.Println(false)
}2.4 字符串类型
Go语言里的字符串的内部实现使用UTF-8编码。字符串的值为双引号中的内容
字符串处理的基本方法
package mainimport (fmtstrings
)func main() {var str string hello,world//len求字符串的长度fmt.Println(len(str))//fmt.sprintf拼接字符串fmt.Println(fmt.Sprintf(我真的%s, 帅))//字符串中是否包含fmt.Println(strings.Contains(str, hello))//以分割字符串fmt.Println(strings.Split(str, ,))arr : []string{hello, world}//拼接字符串sep什么为间隔fmt.Println(strings.Join(arr, ,))//是否有后缀fmt.Println(strings.HasSuffix(str, world))//是否有前缀fmt.Println(strings.HasPrefix(str, hello))//子字符串最开始出现的位置fmt.Println(strings.Index(str, ell))//子字符串最后开始出现的位置fmt.Println(strings.LastIndex(str, l))
}
2.5字符
组成每个字符串的元素叫做 “字符”可以通过遍历字符串元素获得字符。字符用单引号 ‘’ 包裹起来
Go语言中的字符有以下两种类型
uint8类型或者叫byte型代表了ACII码的一个字符 rune类型代表一个UTF-8字符 当需要处理中文日文或者其他复合字符时则需要用到rune类型rune类型实际上是一个int32
Go使用了特殊的rune类型来处理Unicode让基于Unicode的文本处理更为方便也可以使用byte型进行默认字符串处理性能和扩展性都有照顾。
需要注意的是在go语言中一个汉字占用3个字节utf-8一个字母占用1个字节
package mainimport fmtfunc main() {var a byte afmt.Println(a)fmt.Printf(%c \n, a)s : 你好golang//使用len 循环相当于打印的是ascii码for i : 0; i len(s); i {fmt.Printf(%v(%c)\t, s[i], s[i])}//通过rune打印的是 utf-8字符for i, i2 : range s {fmt.Println(i, i2)}s1 : golangbyte1 : []byte(s1)byte1[0] ofmt.Println(string(byte1))s2 : 你好世界byte2 : []rune(s2)byte2[0] 不fmt.Println(string(byte2))
}3.基本数据类型的转化
3.1数值类型的转化
package mainimport fmtfunc main() {var a int16 8var b int64 16fmt.Println(int64(a) b)var c int8 12var d float32 32fmt.Println(float32(c) d)
}
3.2 转化成字符串
import (fmtstrconv
)func main() {//通过sprint转化成字符串s1 : fmt.Sprintf(%d, 1)fmt.Println(s1)//痛殴strconv转化var num float64 3.14fmt.Println(strconv.FormatFloat(num, f, -1, 64))
}
3.3 字符串转化成int和float类型 import (fmtstrconv
)func main() {str : 10str2 : 3.14fmt.Println(strconv.ParseInt(str, 10, 64))fmt.Println(strconv.ParseFloat(str2, 64))}