整型的使用细节
- Golang 各整数类型分:
有符号
和无符号
,int uint
的大小和系统有关。 - Golang 的整型默认声明为
int
型
var n1 = 100
fmt.Printf('n1的数据类型%T',n1)
- 如何在程序查看某个变量的字节大小和数据类型(使用较多)
var n2 int64 = 10
fmt.Printf('n2的 数据类型 %T n2占用的字节数是 %d',n2,unsaft.Sizeof(n2))
浮点型使用细节
Golang 浮点类型有
固定的范围
和字段长度
,不受具体OS(操作系统)的影响
。Golang 的浮点型默认声明为
float64
类型。浮点型常量有两种表示形式
十进制数形式:如:5.12 .512 (必须有小数点)
科学计数法形式:如:5.1234e2 = 5.12 * 10 的2 次方5.12E-2 = 5.12/10 的2 次方
- 通常情况下,应该使用
float64
,因为它比float32
更精确。[开发中,推荐使用float64
]
字符类型(char)
%c
把对应的数字,格式化为unicode对应的字符
%d
把字符型常量,格式化为unicode对应的数字
var byte c1='a'
var byte c2='0'
fmt.Println("c1=",c1)
fmt.Println("c2=",c2)
//希望格式化输出
fmt.Printf("c1=%c c2=%c",c1,c2)
var c3 int = '北'
fmt.Printf("c3=%c 对应用码值是%d", c3,c3)
当我们直接输出
byte
值时,就是输出对应字符的码值
- 字符常量是用单引号('')括起来的单个字符。例如:
var c1 byte = 'a' var c2 int = '中' var c3 byte = '9'
- Go 中允许使用转义字符 '\’来将其后的字符转变为特殊字符型常量。例如:
var c3 char = ‘\n’ // '\n'
表示换行符 - Go 语言的字符使用 UTF-8 编码 ,如果想查询字符对应的 utf8 码值 http://www.mytju.com/classcode/tools/encode_utf8.asp
英文字母-1个字节 汉字-3个字节 - 在 Go 中,字符的本质是一个整数,直接输出时,是该字符对应的 UTF-8 编码的码值。
- 可以直接给某个变量赋一个数字,然后按格式化输出时
%c
,会输出该数字对应的unicode
字符
字符类型(char)本质探讨
- 字符型 存储到 计算机中,需要将字符对应的码值(整数)找出来
存储:字符--->对应码值---->二进制-->存储
读取:二进制----> 码值 ----> 字符 --> 读取
- 字符和码值的对应关系是通过字符编码表决定的(是规定好)
- Go语言的编码都统一成了utf-8。非常的方便,很统一,再也没有编码乱码的困扰了
string 使用注意事项和细节
1、 Go语言的字符串的字节使用UTF-8
编码标识Unicode
文本,这样Golang
统一使用UTF-8
编码,中文 乱码问题不会再困扰程序员。
2、字符串一旦赋值了,字符串就不能修改了:在 Go 中字符串是不可变的
。
3、 字符串的两种表示形式
1) 双引号
, 会识别转义字符
2) 反引号
,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果
4、 字符串拼接方式 用 +
号
5、当一行字符串太长时,需要使用到多行字符串,+
号放在上一行,因为Golang会默认在后面加;
基本数据类型的默认值(零值)如下:
- 整型
0
- 浮点型
0
- 字符串是
""
- 布尔型是
false
%v
是按照变量的原值输出
基本数据类型的相互转换
Go 在不同类型的变量之间赋值时需要显式转换
。也就是说 Golang 中数据类型不能自动转换
。
- 基本语法
表达式
T(v)
将值v
转换为类型T
T
: 就是数据类型,比如 int32,int64,float32 等等v
: 就是需要转换的变量
基本数据类型相互转换的注意事项
1、Go中,数据类型的转换可以是从表示范围小-->表示范围大
,也可以范围大--->范围小
2、被转换的是变量存储的数据(即值),变量本身的数据类型并没有变化!
3、 在转换中,比如将 int64
转成 int8 【-128---127】
,编译时不会报错,只是转换的结果是按 溢出处理
,和我们希望的结果不一样。 因此在转换时,需要考虑范围.
import (
_ "fmt"
)
引入一个包时如果想暂时不用这个包,可以前面加
_
键先忽略
基本数据类型和 string 的转换
将基本数据类型(int float bool byte
)转成 string
,或者将 string
转成基本数据类型
-
方式
1、fmt.Sprintf("%参数", 表达式)
(推荐)
image.png -
%参数详见
Go标准库文档fmt
->Sprintf
部分
2、用函数的方式转
string转基本数据类型
package main
import(
"fmt"
"strconv"
)
//演示string转基本类型
func main(){
var str = "true"
var b bool
// _ 忽略 bool 返回的error
b,_ = strconv.ParseBool(str)
fmt.Printf("b type %T b=%v\n",b,b)
var str2 string = "1234590"
var n1 int64
var n2 int
//返回的是int64位
n1,_ = strconv.ParseInt(str2,10,64)
n2 = int(n1)
fmt.Printf("n1 type %T n1=%v\n",n1,n1)
fmt.Printf("n2 type %T n2=%v\n",n2,n2)
var str3 string = "123.456"
var f1 float64
f1,_ = strconv.ParseFloat(str3,64)
fmt.Printf("f1 type %T f1=%v\n",f1,f1)
}