Go语言学习——3、变量、常量及内置数据类型

此篇着重介绍,如何定义变量、常量、Go语言内置类型及Go语言程序设计中的一些技巧。

一、变量

1.1、定义全局变量——关键字声明【var+type】

/*
定义三个类型都是 type 的变量,
分别初始化为相应的值
*/
var vname1, vname2, vname3 type= v1, v2, v3

1.2、定义局部变量——简短声明【:=】

用“:= ”代替var 和 type,但它只能用在函数内部,在函数外部使用则会无法编译通过,所以一般还是用 var 定义全局变量。

/*
编译器会根据初始化的指自动推导出相应的类型
*/
vname1, vname2, vname3:=v1, v2, v3

1.3、特殊变量名——【_】

_(下划线)是个特殊变量名,任何赋予它的值都会被丢弃。

/*
将35赋予b,并同时丢弃34
*/
_,b= 34, 35

1.4、注意

对于已经声明但未使用的变量,Go语言会在编译阶段报错。

/*
变量 i 被声明了但是没被使用
*/
package main

func main(){
	var i int
}

二、常量

Go语言中常量可定义为:

  1. 数值
  2. 布尔值
  3. 字符串

语法如下:

const constantname = value
//如果需要,也可以指明常量的类型
const pi float32 = 3.1415926

从第一印象来说,比C/C++的常量声明、定义简单很多,也很灵活,比如:

const pi = 3.1415926
const i = 1000
const MaxThread = 10
const prefix = “astaxie_”

可以得知,并不一定要指定类型,编译器会根据实际初始化的数据进行判断。

三、内置基础类型

3.1、Boolean

Go语言中布尔值的类型为 bool,值为 true/false,默认值 false。

//示例:
var isActive bool //全局变量声明
var enabled, disabled = true, false //忽略类型的声明

func test() {
	var available bool //一般声明
	valid := false //简短声明
	available = true //赋值操作
}

3.2、数值类型

在这里插入图片描述

注意:

1、整型具体有:

  • int8, int16, int32(别称 rune), int64
  • uint8(别称 byte), uint16, uint32, uint64

这些类型之间是不允许相互赋值或操作的,否则会编译出错。哪怕是 int 与 int32,二者都是32位,但并不能互用。

2、复试的形式为:

RE+iMi

如:

var c complex 64 = 5+5i
fmt.Printf("Value is : %v", c)

3.3、字符串

类型是 string,

  • 双引号定义
  • 单引号定义
3.3.1、双引号定义
var frenchhello string //声明全局变量,var+type
var EmptyString = " " //简约声明
func test() {
	no, yes, maybe := "no", "yes", "maybe" //简约声明,同时声明多个变量
	frenchhello = "Bonjour" //赋值操作
}
3.3.2、单引号定义

单引号括起来的字符串为 Raw字符串,即字符串在代码中的形式就是打印时的形式,没有字符转义,换行也按原样输出。

m := ' hello
	word '
3.3.3、用“+”连接两个字符串

和string类似,Go语言可以使用“+”来连接两个字符串:

s :="hello"
m :="world"
a :=s+m
fmt.Printf("%s\n", a)
3.3.4、修改字符串

在Go语言中,字符串类型是不可变的,如下代码在编译时会报错的:

var s string = "hello"
s[0] = 'c'

那么该如何修改呢?下面有两种方法:

法一:先转换类型,修改后再修改回原类型

s := "hello"
c := []byte(s) //将字符串 s 转换为 []byte 类型
c[0] = 'c'
s2 :=string(c)
fmt.Printf("%s\n", s2)

法二:进行切片
字符串虽然不能更改,但是可以进行切片操作。

s := "hello"
s = "c"+s[1:]	//s[1:] 是"hello"的一个切片:"ello" 
fmt.Printf("%s\n", s)	//输出:"cello"

3.4、错误类型

  • Go语言内置有一个 error 类型,专门用来处理错误信息。
  • Go语言的 package 里面还专门有一个包 errors 来处理错误。
err := errors.New("emit macho dwarf: else header corrupted")
if err !=nil {
	fmt.Print(err)
}

3.5、Go语言数据底层的存储

在这里插入图片描述
如图,即为Go语言数据格式的存储。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值