go基本类型使用细节

整型的使用细节

  • 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值时,就是输出对应字符的码值

  1. 字符常量是用单引号('')括起来的单个字符。例如:var c1 byte = 'a' var c2 int = '中' var c3 byte = '9'
  2. Go 中允许使用转义字符 '\’来将其后的字符转变为特殊字符型常量。例如:var c3 char = ‘\n’ // '\n'表示换行符
  3. Go 语言的字符使用 UTF-8 编码 ,如果想查询字符对应的 utf8 码值 http://www.mytju.com/classcode/tools/encode_utf8.asp
    英文字母-1个字节 汉字-3个字节
  4. 在 Go 中,字符的本质是一个整数,直接输出时,是该字符对应的 UTF-8 编码的码值。
  5. 可以直接给某个变量赋一个数字,然后按格式化输出时%c,会输出该数字对应的unicode字符

字符类型(char)本质探讨

  1. 字符型 存储到 计算机中,需要将字符对应的码值(整数)找出来
    存储:字符--->对应码值---->二进制-->存储
    读取:二进制----> 码值 ----> 字符 --> 读取
  2. 字符和码值的对应关系是通过字符编码表决定的(是规定好)
  3. Go语言的编码都统一成了utf-8。非常的方便,很统一,再也没有编码乱码的困扰了

string 使用注意事项和细节

1、 Go语言的字符串的字节使用UTF-8编码标识Unicode文本,这样Golang统一使用UTF-8编码,中文 乱码问题不会再困扰程序员。
2、字符串一旦赋值了,字符串就不能修改了:在 Go 中字符串是不可变的
3、 字符串的两种表示形式
1) 双引号, 会识别转义字符
2) 反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果
4、 字符串拼接方式 用 +
5、当一行字符串太长时,需要使用到多行字符串,+号放在上一行,因为Golang会默认在后面加;

基本数据类型的默认值(零值)如下:

  • 整型 0
  • 浮点型 0
  • 字符串是 ""
  • 布尔型是 false

%v是按照变量的原值输出

image.png

基本数据类型的相互转换

Go 在不同类型的变量之间赋值时需要显式转换。也就是说 Golang 中数据类型不能自动转换

  • 基本语法

表达式 T(v) 将值 v转换为类型 T
T: 就是数据类型,比如 int32,int64,float32 等等 v: 就是需要转换的变量

image.png

基本数据类型相互转换的注意事项

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)
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容