Go语言学习笔记(三)

一、理解变量

1.1 变量是什么

  1. 变量的定义(自己想)
  2. Go语言是一种静态类型语言,声明变量必须显式或者隐式地指定其类型。

1.1.1 为变量赋值的方法

声明变量的方法和别的语言类似,可以在声明的时候初始化,也可以先声明在赋值,但是要注意的是,Go语言不支持不同类型变量之间的赋值,否则会导致编译错误

	//声明时初始化
	var s string = "从前喜欢一个人"
	
	//声明变量后赋值
	var s string
	//这条语句执行后,s是一个空字符串,理由见(二)
	s = "现在喜欢一个人"

1.2 快捷变量声明

Go语言支持多种快捷变量声明方式。可以在一行内声明多个类型相同的变量并给他们赋值(C++??),但是一个变量声明之后不能再次声明,否则会编译错误,但是可以为已经定义的变量赋值,示例如下:

	//1.声明相同类型的多个变量
	var s,t string = "foo","bar"
	//2.声明不同类型的多个变量
	var (
		s string = "foo"
		i int = 4
	)

这里要注意声明变量的时候和C++相似但不一样,声明变量的格式:

	var <变量名列表(用逗号隔开)> <变量类型(只能写一个)> <值列表(用逗号隔开)> //这里的值和变量名是一一对应的

1.3 理解变量和零值

在Go语言中,声明变量时如果没有赋初值,则变量将为默认值——零值。
其他语言未赋初值的变量的值为nil(Null,None)或者undefined
通过如下程序,我们可以知道不同类型变量的零值:

package main

import (
	"fmt"
)
func main(){
	var(
		i int
		f float64
		b bool
		s string
	)
	fmt.Printf("%v %v %v %q\n", i, f, b, s)
}

输出结果为:0 0 false “”

因为Go语言的这个机制,所以我们检查某个变量是否被初始化,不能检查他是否为nil,而应该检查他是否为对应的零值,
Go 语言禁止将变量初始化为nil值,因为这将导致编译错误

1.4 编写简短变量声明

Q:什么是简短变量声明?
A:字面意思,声明更短更简洁,不需要关键词var,和变量的类型名,类似于python的变量声明,例子如下:

	s := "hello world"

注意:在使用简短变量声明时,:=的左值中至少得有一个是新的变量(从未出现的),否则会报错:

no new variables on left side of :=
之所以或报错,是因为简短变量声明的原理是,操作系统根据右值确定左值的类型,但是左值如果是一个已经声明的变量(类型已经确定)像什么样子??

1.5 变量的声明方式

	var s string = "Hello World"
	var s = "Hello World"
	var t string
	t = "Hello World"
	u := "Hello World"

Go语言对声明方式的限制条件很低:不能在函数外面使用简短变量声明。

对了,在Go语言中,变量声明之后必须使用,否则同样会报错

1.6 理解变量作用域

  1. 作用域指的是变量在什么地方可以使用,而不是变量在什么地方声明的。
  2. Go语言使用基于块的词法作用域,和C++差不多。
    在这里插入图片描述
  3. 全局变量的作用域是最大的,他的生存期是从定义到程序结束

1.7 使用指针

这是一部分悲伤的内容

  1. 在Go语言中声明变量的饿时候,将在计算机内存中给它分配一个位置,以便能够储存、修改和获取变量的值
  2. 要获取变量在计算机内存中的地址,可以在变量名前加上&字符
  3. 我们可以用fmt.Println(&s)来获取变量s在计算机内存中的位置

指针指向的是一块内存空间,它的值是内存空间的地址,要对内存空间的数据进行操作需要加上*号

1.8 声明常量

  1. 常量指的是在整个程序声明周期内都不变的值。常量初始化之后,可以引用他,但不能修改它。
  2. 常量的命名方式和变量类似就是把var换成了const
  3. 使用简短变量声明语句声明的变量,它的值可以被修改(但是不可以再使用:=来赋值)
 参考书籍
 [1]: 【Go语言入门经典】[英] 乔治·奥尔波 著 张海燕 译
题外话:
  1. 今天很高产,o( ̄︶ ̄)o,速刷一遍之后开始刷黑砖了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是兔不是秃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值