Go语言学习笔记——变量

变量

变量使用方式

  • 指定变量类型,声明若不赋值,使用默认值
var i int
  • 根据值自行判定变量类型
var num = 10.11
  • 省略var
name := "tom"
//等价于
var name string 
name = "tom"

注: **:=**左侧的变量不应该是已经声明过的,否则编译出错

多变量声明

  • 方式一:相同类型
var n1,n2,n3 int
//等价于
var n1 int
var n2 int
var n3 int
  • 方式二:不同类型
var n1,name,n3 = 100,"tom",888
  • 方式三:类型推导
n1,name,n3 := 100,"tom",888

全局变量声明

var n1 = 100
var n2 = 200
var name = "jack"
//等价于
var(
    n1 = 100
    n2 = 200
    n3 = "jack"
)

整形使用细节

  • Go各整形类型分:有符号和无符号,int和uint的大小和系统有关
  • Go的整型默认声明为int型
  • 在程序中查看某个变量的数据类型和占用字节大小
var n1 = 100
fmt.Printf("n1 的类型 %T,n1占用的字节数是 %d",n1,unsafe.Sizeof(n1))
  • Go程序在保证程序正常运行下,尽量使用占用空间下的数据类型
  • bit:计算机中最小的存储单位。byte:计算机中基本存储单元

浮点型使用细节

  • 浮点数在机器中存放形式:浮点数=符号数+指数位+尾数位
  • 尾数部分可能丢失,造成精度损失
  • Go浮点类型有固定的范围和字段长度,不受OS影响
  • Go浮点类型默认声明为float64
  • Go浮点类型支持科学计数法
num :=2.1234e2// 5.1234 * 10的2次方
num :=2.1234E2// 5.1234 * 10的2次方
num :=2.1234E-2// 5.1234 / 10的2次方
  • 通常使用float64类型

字符类型使用细节

Go中没有特定的字符类型,一般用byte类型

当直接输出byte值,就是输出了的对应的字符的码值

如果需要输出对应字符,需要格式化输出

var c1 byte = 'a'
var c2 byte = '0'
fmt.Printf("c1=%c,c2=%c\n",c1,c2)
  • 字符常量是用单引号(‘’)括起来的单个字符
var c1 byte = 'a'
var c2 int = '中'
var c3 byte = '9'
  • Go中允许使用转义字符“\”来将其后的字符转变为特殊字符型常量
  • Go语言的字符使用UTF-8编码 英文字母----1个字节 汉字----3个字节
  • Go中,字符的本质是一个整数,直接输出时,是该字符对应的UTD-8的码值
  • 可以直接给某个变量赋一个数字,然后按格式化输出时%c,会输出该数字对应的unicode字符
  • 字符类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码

布尔类型使用细节

  • bool类型占用存储空间是一个字节

  • bool类型只能取true或者false

  • 不可以用0或者非0代替bool类型

字符串类型使用细节

  • Go语言的字符串的字节使用UTF-8编码表示Unicode

  • 字符串一旦赋值了,字符串就不能修改了:在Go中字符串是不可变的

  • 字符串的两种表示方式

    1.双引号,会识别转义字符

    扫描二维码关注公众号,回复: 15049765 查看本文章

    2.反引号(``),以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击,输出源代码等效果

  • 字符串拼接方式

    var str = "hello " + "world"
    

    当拼接很长的字符串时,可以分行写(把加号写在上一行)

    var str = "hello" +
    "world" +
    "hello" +
    "world"
    

数据转换使用细节

  • Go中数据类型必须强制转换,不能自动转换

  • Go中数据类型的转换可以是从表示范围小---->表示范围大,也可以表示范围大---->表示范围小

  • 被转换的时变量存储的数据(即值),变量本身的数据类型并没有变化

  • 在转换中,比如将int64转成int8,编译不会报错,只是转换的结果是按溢出处理,和我们希望的结果不一样

基本数据类型转String

方式一:fmt.Sprintf

fmt.Sprintf("%参数",数据)
//例子
var num1 int = 99
var num2 float64 = 23.456
var myChar byte = 'h'
var str string

str = fmt.Sprintf("%d",num1)
str = fmt.Sprintf("%f",num2)
str = fmt.Sprintf("%c",myChar)

方式二:strconv

//例子
var num1 int = 99
var num2 float64 = 23.456
var b bool = true
var str string

str = strconv.FormatInt(int64(num1),10)
str = strconv.FormatFloat(num2,'f',20,64)
str = strconv.FormatBool(b)

String转基本类型

方式一:strconv

var str string = "true"
var b bool
b,_ = strconv.ParseBool(str)

var str string = "1234590"
var n1 int
n1,_ = strconv.ParseInt(str,10,0)

注意事项:

  • 在将String类型转成基本数据类型时,要确保String类型能够转成有效数据。如果将"hello"转成整数,那么Golang直接将其转成0

常量

介绍

  1. 常量使用const修饰
  2. 常量在定义的时候,必须初始化
  3. 常量不能修改
  4. 常量智能修饰bool,数值类型,string类型

注意

  1. 比较简洁的写法

    const (
    	a=1
        b=2
    )
    
  2. 还有一种专业的写法

    const(
    	a=itoa
        b
        c
    )
    // a=0,b=1,c=2
    
  3. Go中没有常量必须字母大写的规范

  4. 仍然通过首字母的大小写来控制变量的访问范围

猜你喜欢

转载自blog.csdn.net/weixin_45976751/article/details/127554955