二、理解类型

接下来的的内容比较适合新手,如果之前有编程经验的老手下面的内容比较容易理解

数据类型是什么

数据类型让编程语言、编译器、数据库和代码执行环境知道如何操作 和处理数据 。例如 , 如果数据类型为数字,通常可对其执行数学运算。编程语言和数据库常常根据数据类型赋予 程序员不同的功能和性能。大多数编程语言 还提供了用 于处理常 见数据的标准库,而数据 库 提供了查询语言 ,让程序员能够根据底层数据类型来查询数据 以及与之交互 。无论数据类型 是否被显式地声明 ,它们都是重要的编程和计算结构。

区分静态类型和动态类型

(通常称为强类型和若类型语言)

所谓强类型语言 ,指的是错误地使用了类型时,编译器将引发错误 :所谓动态类型(也 叫松散类型或弱类型)语言,指的是为了执行程序,运行时会将一种类型转换为另一种类型,或者编译器没有实现类型系统。哪种语言更好呢?这存在很大的争议,计算机科学家看重强类型语言的正确性和安全性,而其他人则看重动态语言的简单性和开发速度。

下面是静态类型语言的一些优点 。

> 性能高于动态类型语言。

> Bug 通常会被编译器发现 。

> 代码编辑器可提供代码补全和其他功能 。

> 数据完整性更好 。 下面是动态类型语言的一些优点 。

> 使用动态类型语言编写软件的速度通常更快。

> 无须为执行代码而等待编译器完成编译 。

> 动态类型语言通常不那么死板,因 此有些人认为变更代码更 容易。

> 有些人认为动态类型语言学习门 槛更低 。

在go语言中,可以让编译器判断类型也可以显式的声明类型

package main

import (
	"fmt"
)

func sayHello(s string) string{
	return "Hello" + s 
}
func main (){ 
	fmt.Println(sayHello("boot")) 
#根据代码可以看出,调用的sayHello方法,
指定了参数必须为string类型,
尝试使用非string类型入参则会产生报错
}

弱类型示例(使用js)

var addition = function (a, b) { 
return x + y;
};

这里使用全部使用string类型也可以,使用数字加string类型也可以,在运行时以及输出结果不会有问题,看起来貌似很强大,但是这种松散型的管理会发生灾难后果,例如:当我需要把这个方法返回的数据存储到数据库中时,因为我们都知道在数据库中例如Mysql创建字段时候是要声明字段类型的,而这种松散的管理会使得程序出现非常大的问题,换言之相当于需要人来控制而非程序帮我们进行控制。

基本数据类型

当然本期的主题是理解类型,那我们现在就知道了,在go中基本数据类型包含

1、string 

声明方法

var s string = "boot" #这里我们可以看到在java中字符串非基本数据类型而go中属于基本数据类型,另外在写法上var类似于js写法,变量名与类型与java是反过来的,变量名在前类型在后

2、布尔

声明方法

var b bool #这里的布尔写法相较于在java中更加简便(boolean),但是一样的是默认值均为false

3、整数

声明方法

var i int 

4、浮点数

声明方法(推荐使用float64)

var float32 = 0.11

var float64 = 0.11

5、数组

声明方法

var beatles [4]string

赋值方法

beatles[0] = "boot"

beatles[1] = "boot1"

数据类型检查

go提供了reflect包,用于检查数据类型

package main

import (
	"fmt"
	"reflect"
)

func main(){
	var test [4]string
	test[0] = "boot"
	fmt.Println(test)
	var int [4]int
	int[0] = 1
	fmt.Println(int)
	fmt.Println(reflect.TypeOf(int))
}

#输出结果
[boot   ]
[1 0 0 0]
[4]int

数据类型转换

go中提供了strconv包,提供了数据类型的转换

package main

import (
	"fmt"
	// "reflect"
	"strconv"
)

func main(){
	var b string = strconv.FormatBool(true)
	fmt.Println(b)
}

#结果输出
true

另外,在go语言中如果引用的包和变量没有被使用会报错

"reflect" imported and not used /  s declared and not used

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值