Go语言学习笔记(一)Go语言变量的声明和初始化

       由于我以前是学的C/C++语言,所以在博客中会将Go与C/C++进行对比来学习:

       Go语言作为C语言家族的新派代表,在C语言的定义方法和类型上做了优化和调整,更加灵活易学。今天首先从最简单的变量声明开始进行学习:

1.三种声明方式

        普通变量的声明有三种方式,第一种和第二种通过关键字var来声明变量,第三种则靠编译器进行推断,分别如下:

var i int = 12    //明确定义i为int类型
var i =  12       //自动识别i为int类型
i := 12           //自动推断变量i为int类型
注意:由于使用了:=,而不是赋值的=,因此推导声明写法的左值变量必须是没有定义过的变量,如果定义过,则会发生编译错误。如下在一个语句块中同时出现以下两条语句就会报错:
var i int = 12
i := 12         //报错,i已经声明过了,将:=改为=,正确

这里有一个注意的地方就是,使用上面第二种和第三种方式时,等号右边必须是明确类型的值,可以让编译器推断出来。

2.批量声明不同类型的变量

var (

    a int
    b string
    f func() bool     //声明一个函数变量,返回值为bool。等价于C语言里面函数指针的声明
    e struct {
        x int
    }
)

以上声明等价于:
var a int
var b string
var f func() bool
var e struct {
        x int
    }

3.批量声明/初始化相同类型的变量

var a, b, c, d int = 1, 2, 3, 4

等价于:
var a int = 1
var b int = 2
var c int = 3
var d int = 4

通过上面的同时给多个变量初始化,我们可以得到启示,用一行代码来完成C语言中需要三行代码的交换:
a, b = b, a   //交换了a和b的值

4.声明匿名变量

func GetData() (int, int) {
    return 100, 200
}
a, _ := GetData()    //a=100,200被匿名变量接收,放弃使用
_, b := GetData()    //b=200, 100被匿名变量接收,放弃使用
fmt.Println(a, b)    //输出100, 200

注意:匿名变量不占用命名空间,不会分配内存。

5.常量的声明与初始化

 

6.变量类型

(1)整型

按长度分为:int8、int16、int32、int64
对应的无符号整型:uint8、uint16、uint32、uint64

如果没有明确指明长度,则其根据平台的位数决定,如:
int和uint在32位平台上占4个字节,在64位平台上占8个字节

(2)浮点型

Go语言支持两种浮点型数:float32 和 float64。这两种浮点型数据格式遵循 IEEE 754 标准:
float32 的浮点数的最大范围约为 3.4e38,可以使用常量定义:math.MaxFloat32。
float64 的浮点数的最大范围约为 1.8e308,可以使用一个常量定义:math.MaxFloat64。

(3)bool类型

Go中以bool声明布尔型数据,布尔型数据只有true和false两个值。

但是Go语言和C语言不同,不允许将整型强制转换为布尔型。
布尔型无法参与数值运算,也无法与其他类型进行转换。

(4)字符串

Go语言字符串和C++中string有所不同,其中最大的不同就是Go语言中字符串无法直接通过下标修改每一个字符元素,只能通过重新构造新的字符串并赋值给原来的字符串变量实现。如下:

str := "hello"

str[0] = 'f'   //错误,无法通过下标访问

strBytes := "=[]byte(angel)   //正确
strBytes[0] = 'f'
str = string(strBytes)

关于字符串的相关操作后面再专题详细介绍。

(5)byte和rune

Go语言的字符有以下两种:
a).一种是uint8类型,或者叫byte类型,代表了一个ASCII码的一个字符。等价于C语言中unsigned char
b).一种是rune类型,代表UTF-8字符,底层是int32类型。用来处理中文、日文等复合字符。

(6)常量

a).常量的声明
常量的声明和变量声明非常类似,只是把var换成了const
const pi = 3.1415926

注意:常量必须在编译时就确定其值,所以常量也可以用于数组声明

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值