2 golang中变量的定义

个人理解的是,go里面的变量和const修饰的常量其实是不同的概念,做了一个彻底的区分。

对变量的定义:引入了关键字var对变量进行声明

var a int
var b string
var c float64
var e [4] int // 数组
var f [] int  //数组切片
var f * int    //正确
var v1 int = 5 //正确
var v2 = 5     //正确,编译器自动推导出V2类型
v3 := 5        //正确,编译器自动推导出V3的类型

多重赋值

Go语言提供了大多数的语言所不支持的多重赋值,使得变量的的变换变得十分简单,多重赋值的一个例子,就是不要像c语言一样使用中间的变量

i := 2
j := 3
i , j = i , i //交换i与j的值

变量的类型

获取变量的大小

//使用unsafe
package main

import (
  "fmt"
  "unsafe"
)

func main(){
    var a int64 = 10000
    fmt.Println("length of a : " , unsafe.Sizeof(a))
}

布尔类型

Go语言提供内置的布尔值true和false,Go语言支持标准的逻辑比较和比较操作,但是操作结果都是布尔值。在go里面是不允许将其他的类型转换为bool类型的,比如int类型。必须使用false以及true。

var f * int    //正确
var v1 int = 5 //正确
var v2 = 5     //正确,编译器自动推导出V2类型
v3 := 5        //正确,编译器自动推导出V3的类型

字符串

go的字符串和c里面的不同,使用的是UTF-8的一个序列,不再是ASCII,因为UTF-8的编码不定长比较灵活,所以一个字符串的大小也可能是1到4个字节。Go 这样做的好处是不仅减少了内存和硬盘空间占用,同时也不用像其它语言那样需要对使用 UTF-8 字符集的文本进行编码和解码。

t1 := "\"hello world\""
t2 := "\u5b32\u8FCE"
t2 := `"hello"`
转义字符含义
\\表示反斜线
'单引号
"双引号
\n换行符
\uhhhh4 个 16 进制数字给定的 Unicode 字符

在 Go 语言中单个字符可以使用单引号( ' )来创建。之前的课程中,我们有学习过rune类型,它等同于int32,在 Go 语言中,一个单一的字符可以用一个单一的rune来表示。这也是容易理解的,因为 Go 语言的字符串是 UTF-8 编码,其底层使用 4 个字节表示,也就是 32 bit

在 Go 语言中,字符串支持切片操作,但是需要注意的是如果字符串都是由 ASCII 字符组成,那可以随便使用切片进行操作,但是如果字符串中包含其他非 ASCII 字符,直接使用切片获取想要的单个字符时需要十分小心,因为对字符串直接使用切片时是通过字节进行索引的,但是非 ASCII 字符在内存中可能不是由一个字节组成。如果想对字符串中字符依次访问,可以使用range操作符。另外获取字符串的长度可能有两种含义,一种是指获取字符串的字节长度,一种是指获取字符串的字符数量。

字符串支持以下操作:

语法描述
s += t将字符串 t 追加到 s 末尾
s + t将字符串 s 和 t 级联
s[n]从字符串 s 中索引位置为 n 处的原始字节
s[n:m]从位置 n 到位置 m-1 处取得的字符(字节)串
s[n:]从位置 n 到位置 len(s)-1 处取得的字符(字节)串
s[:m]从位置 0 到位置 m-1 处取得的字符(字节)串
len(s)字符串 s 中的字节数
len([]rune(s))字符串 s 中字符的个数,可以使用更快的方法 utf8.RuneCountInString()
[ ]rune(s)将字符串 s 转换为一个 unicode 值组成的串
string(chars)chars 类型是[]rune 或者[]int32, 将之转换为字符串
[ ]byte(s)无副本的将字符串 s 转换为一个原始的字节的切片数组,不保证转换的字节是合法的 UTF-8 编码字节

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值