package main; import ( "fmt" "errors" ) func main() { //bool类型 var isRun = false; //数值类型 //有符号整型 var a int8 = 1; var b int16 = 2; var c int32 = 3; //无符号整型 var k complex64 = 5+5i; var l complex128 = 3+3i; //字符串 var str1 string = "hello"; //go tmp[0] = 'w'; str1 = string(tmp); //通过+进行字符串连接 str2 := "hello"; str3 := str2 + ",go "; //错误类型 err := errors.New("我是个错误"); if err !
在 Printf 方法中,使用 %T 格式说明符(Format Specifier),可以打印出变量的类型。Go 的 unsafe 包提供了一个 Sizeof 函数,该函数接收变量并返回它的字节大小。 类型转换 Go 有着非常严格的强类型特征。Go 没有自动类型提升或类型转换。我们通过一个例子说明这意味着什么。 67.8 //float64 sum := i + j //不允许 int + float64 fmt.Println(sum) } 上面的代码在 C 语言中是完全合法的,然而在 Go i 的类型是 int ,而 j 的类型是 float64 ,我们正试图把两个不同类型的数相加,Go 不允许这样的操作。 如果运行程序,你会得到 main.go:10: invalid operation: i + j (mismatched types int and float64)。
1、int类型转换为int32func intToInt32() {var intNum int = 123int32Num := int32(intNum)fmt.Printf("int32Num type :%T,value: %v\n", int32Num, int32Num)}运行结果:image.png2、int32类型转uintfunc int32ToUint() {var int32Num int32 uint(int32Num)fmt.Printf("uintNum type:%T,value: %v\n", uintNum, uintNum)}运行结果:image.png从上面两个例子可以看出Go 语言类型转换基本格式:type_name(expression) 像数值类型之间的转换都可以这样之间转换。 3、int类型转换为stringfunc intToString() {var intNum int = 789str := strconv.Itoa(intNum)fmt.Printf("str type
var empty *int fmt.Println(empty == nil) // 输出 true nil 类似其它语言中的 null ,在 Go 语言中只能和指针类型、接口类型进行比较,也只能给指针类型变量和接口类型变量赋值 如果通过方法想修改结构体中的字段时,可以将接收者设置为指针类型。 // type/struct.go // ... 指针传递 在 Go 语言中大部分的类型都是值传递,也就是说通过函数传值时,函数内的修改是不能影响外部的,如果想更改就使用指针类型。 // pointer/function.go // ... 对于 Go 语言中的个别类型本身就是引用类型,不需要使用指针就可以在函数内部修改值而影响外部。 1. map 和 通道 这两个是引用类型,在传递时无需使用指针,通道在后续文章举例讲解。 // pointer/map.go // ...
3.Go基础数据类型 前言 前面我们写的程序中,用到的变量的类型都是整型,但是在我们GO语言中,还有很多其它的类型,如下: 类型 名称 长度 零值 说明 bool 布尔类型 1 false 其值不为真即为假 go run 01_布尔类型.go a的默认值为: false a赋值为: true b = false c = false 指定格式的输出: package main import "fmt " func main() { var b bool b = true fmt.Printf("b=%t",b) } 执行如下: $ go run 01_布尔类型_指定格式的输出.go b=true : $ go run 02_浮点型.go f1 = 3.1412737 f2 = 3.1412736768768768 f3 = 3.1412736768768768 f3的数据类型为: float64 ,字符类型,整型等都指定了对应的格式化,那么go语言中还有哪些格式化呢?
语法: var identifier type var 代表声明一个变量,identifier为变量名(go中变量名由字母、数字、下划线构成,首个字符不能为数字),type为变量类型。 其中go变量的命名规则是建议驼峰式的。 常见的方式: /** 单变量 **/ var tmp int // 声明一个int 类型变量tmp,go的变量类型放在变量之后 var tmp int = 6 // 声明+初始化 var tmp = 6 golang大致分为boolean类型、数字类型、字符串类型、派生类型 布尔类型 boolean:只可以为true or false var boolTmp bool = true 数字类型 go语言支持整型和浮点型 接口类型(interface) 这一篇暂时就介绍这么多 指针类型 go指针是一种非常重要的变量,同C中的指针一样,指针保存的是指向变量的地址,语法也跟C的类似。
go语言基础语法学习 基本数据类型 变量定义声明 运算符 条件控制语句 方法函数...当然可以,通过对比 Go 和 JavaScript 的数据类型,我们可以更好地理解它们的差异和各自的使用场景。 以下是 Go 和 JavaScript 数据类型的对比,以及每种类型的使用场景。 基本数据类型对比Go 数据类型JavaScript 数据类型描述与使用场景boolBoolean用于逻辑判断,例如条件语句和循环。 Go: var a complex64 = 1 + 2i复合类型对比Go 数据类型JavaScript 数据类型描述与使用场景arrayArray有固定长度的同类型元素集合,用于存储多个相同类型的值。 通过对比 Go 和 JavaScript 的数据类型及其使用场景可以更好地理解它们各自的优势和适用场景
点击阅读原文可访问《Go语言程序设计》电子书 前言 最近在读《Go 语言程序设计》这本书想通过看书巩固一下自己的基础知识,把已经积累的点通过看书学习再编织成一个网,这样看别人写的优秀代码时才能更好理解 声明 Go语言主要有四种类型的声明语句:var、const、type和func,分别对应变量、常量、类型和函数。 数组或结构体等聚合类型对应的零值是每个元素或字段都是对应该类型的零值。 零值初始化机制可以确保每个声明的变量总是有一个良好定义的值,因此在Go语言中不存在未初始化的变量。 例如: var s string fmt.Println(s) // "" 基础类型 基础类型,包括:数字、字符串和布尔型。 基本数据类型,它们可以用于构建程序中数据结构,是Go语言的世界的原子。
= 1 ) // 同理类型推导 var ( i = 0 k = 1 ) 类型int/float64/bool/string 等基础类型都可以被自动推导。 //类型推导 var s3 = s1 + s2 //可以通过操作符 + 把字符串串连起来 s1 += s2 //也可以通过 += 运算符操作 零值 零值其实就是一个变量的默认值,Go语言中,如果只声明了一个变量 指针 Go 语言中,指针对应的是变量在内存中存储的位置,也就是说指针的值就是遍历的内存地址。通过 & 可以获取变量的地址,也就是指针。*可以获取地址对应的值。 常量定义 和变量类型,只不过使用关键字 const const name = "无尘" 在 Go语言中,只允许布尔型、字符串、数字类型这些基础类型作为常量。 字符串 字符串和数字互换 Go是强类型语言,不同类型的变量是不能相互使用和计算的。不同类型的变量在进行复制或计算时,需要先进行类型转换。
Go语言结构 一个Go文件由以下几个部分编写而成: 包声明 package 包名 引入包 import "包名" 函数 func 函数名(参数列表) 变量 var 变量名 变量类型 语句&表达式 注释 语言数据类型 Go语言所支持的数据类型按类别可以分为四大类: 布尔型 true 或 false 数值型 整型、浮点型、复数 字符串 字符串是由单个字节连接起来的字符序列,Go采用UTF-8格式编码 为了方便定义变量,Go也定义了以下数据类型: 序号 类型和描述 1 byte 类似 uint8 2 rune 类似 int32 3 uint 32 或 64 位 4 int 与 uint 一样大小 5 uintptr 无符号整型,用于存放一个指针 rune和unitptr是Go独创,其他类型别的编程语言也有,基本上可以说是博采众长。 参见:C\C#\Java\Python 基本数据类型比较
Go语言中内置了大量的数据类型,包括基本数据类型和符合数据类型,其中基本数据类型有如下七种: 布尔型:bool 整形:byte,int,int8,int16,int32,int64,uint,uint8 布尔型 布尔型由关键字bool表示,可取值为true或者false,如: var a bool = false var b bool = true 布尔型通常用于逻辑判断中,在Go语言中布尔型不能与整形进行类型转换 Go语言整形具体如下表所示: image.png 除此之外,还有int,uint和uintptr这三个与平台相关的整形类型,byte类型与uint8类型一致。 3. 浮点型 在Go语言中定义了两个浮点数类型,为float32和float64,这两者之间的差别是表示的数值长度不同,float32对应了其他语言中的float类型,而float64对应了其他语言中的double 复数类型 复数类型在Go语言中也有两种类型,分别为complex64和complex128,复数是由实部和虚部构成,复数在Go语言中的定义如下所示: var a complex64 = 1 + 2i var
Go 基础之基本数据类型 一、整型 所谓整型,主要用来表示现实世界中整型数量,比如年龄,分数,排名等等 Go 语言整型可以分为平台无关整型和平台相关整型这两种,它们的区别主要就在,这些整数类型在不同 2.2 浮点类型 Go语言支持两种浮点型数:float32和float64。这两种浮点型数据格式遵循IEEE 754标准。 浮点类型与前面的整型相比,Go 提供的浮点类型都是平台无关的。 Go 语言则原生支持复数类型。 和整型、浮点型相比,复数类型在 Go 中的应用就更为局限和小众,主要用于专业领域的计算,比如矢量计算等。我们简单了解一下就可以了。 Go 语言规定,字符串类型的值在它的生命周期内是不可改变的。 八、类型转换 Go语言中只有强制类型转换,没有隐式类型转换。该语法只能在两个类型之间支持相互转换的时候使用。
本篇博客将深入探讨Go语言中的数据类型转换,从基本概念到类型转换的方法和最佳实践,帮助您理解如何在Go中进行安全、有效的数据类型转换。 隐式转换 在一些情况下,Go语言会自动执行隐式转换。例如,将整数值赋给浮点数变量时,会自动进行类型转换。 在Go语言中,使用括号将目标类型括起来,将要转换的值放在括号前面。 type Celsius float64 var temperature Celsius = 25.5 类型转换 自定义类型与其基础类型之间需要显式转换。 总之,数据类型转换是Go语言中不可或缺的一部分,对于构建强大、稳定的程序至关重要。通过深入理解和掌握不同类型转换的方法,您将能够更加自信地进行数据处理,编写出高质量、可靠的Go语言代码。
Go 基础数据类型: 布尔型 数字类型 字符串类型 错误类型 布尔型 bool 布尔型的值只能为 true 或 false , 例: var v1 bool = true v1 := (2 > 1) Go语言支持以下的常规整数运算:+ - * / % 。 字符串在Go中是 UTF-8 的由双引号(")或反引号(``)包裹的字符序列(类型为string)。 字符类型 rune 在Go语言中支持两个字符类型,要给是byte(实际上是uint8的别名),代表UTF-8字符串的单个字节的值;另一个是rune,代表单个Unicode字符。 关于rune相关操作,可查阅Go标准库的unicode包。另外unicode/utf8包也提供了UTF-8和Unicode之间的转换。 字符串遍历 Go语言支持两种方式遍历字符串。
Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。Go 语言的基本类型和其他语言大同小异。 基础数据类型 整型 整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint16、uint32、uint64 其中,uint8就是我们熟知的 布尔值 Go语言中以bool类型进行声明布尔型数据,布尔型数据只有true(真)和false(假)两个值。 注意: 布尔类型变量的默认值为false。 Go 语言中不允许将整型强制转换为布尔型. 布尔型无法参与数值运算,也无法与其他类型进行转换。 字符串 Go语言中的字符串以原生数据类型出现,使用字符串就像使用其他原生数据类型(int、bool、float32、float64 等)一样。 (byteS1)) s2 := "白萝卜" runeS2 := []rune(s2) runeS2[0] = '红' fmt.Println(string(runeS2)) 类型转换 Go语言中只有强制类型转换
01 整数类型 整数类型按照有/无符号划分,可分为有符号整数和无符号整数,二者按照大小划分,有 8 位、16 位、32 位和 64 位: 大小 8 位 16 位 32 位 64 位 有符号 int8 需要注意的是,int 和 uint 都有别于大小明确的类型,也就是说,int 和 int32 是两种不同的类型,必须显示转换。 int32 的类型别名,二者可以互换使用") } if d == e { fmt.Println("byte 类型是 uint8 的类型别名,二者可以互换使用") } } 02 bool 型的值只有两种可能,true 和 false,在 Go 语言中,bool 型的零值是 false,布尔值无法隐式转换成数值 0 或 1,反之亦然。 int32 的类型别名,二者可以互换使用 byte 类型是 uint8 的类型别名,二者可以互换使用 字符串 i 的长度:12 字符串 i 的第一个字符:h 子字符串 j 的值:hello 子字符串
在Go语言(Golang)中,整数类型具有丰富的分类和特点,包括有符号整数和无符号整数,不同大小的整数范围,以及整数运算等。 本篇博客将深入探讨Go语言中的整数类型,介绍不同整数类型的特点、范围、运算规则以及在实际开发中的应用。 整数类型的分类 在Go语言中,整数类型可以分为有符号整数和无符号整数两类。 Go语言整数类型的使用示例 下面是一些使用Go语言整数类型的示例代码: package main import "fmt" func main() { // 有符号整数 var num1 ,Go语言提供了丰富的整数类型用于表示不同范围的整数值。 希望本文能够帮助您深入理解Go语言中的整数类型,从而更加灵活地应用这些知识,编写出高效、可靠的软件项目。
介绍 字符类型是计算机编程中用于表示文本和字符的数据类型,是构建字符串的基本单位。在Go语言(Golang)中,字符类型具有独特的特点和表示方式,包括Unicode编码、字符字面值以及字符操作。 本篇博客将深入探讨Go语言中的字符类型,介绍字符的编码方式、字符字面值的表示、字符操作方法以及在实际开发中的应用。 在Go语言中,字符类型使用Unicode编码,每个字符对应一个唯一的Unicode码点。 Go语言使用rune类型来表示Unicode码点,它实际上是一个int32类型的别名。 字符串操作与拼接 字符类型用于字符串操作,包括字符串拼接、格式化输出等。字符串是许多编程任务的基础,字符类型的操作能够实现字符串的构建和处理。 Go语言字符类型的使用示例 下面是一些使用Go语言字符类型的示例: package main import "fmt" func main() { // 使用字符字面值创建字符串 str1
在 Go 语言中,数据类型是编程过程中非常重要的概念。了解和正确使用不同的数据类型可以帮助我们更好地处理数据,并编写出高效、可靠的代码。 本文将详细介绍 Go 语言的基础数据类型,包括整数类型、浮点数类型、布尔类型、字符串类型等。图片整数类型Go 语言提供了多个整数类型,每种类型在内存中占用的空间大小不同,适用于不同范围的整数值。 string = "Hello"bytes := []byte(str)bytes[0] = 'h'str = string(bytes)fmt.Println(str) // 输出:hello其他基础类型除了上述介绍的整数类型 、浮点数类型、布尔类型和字符串类型外,Go 语言还提供了其他一些基础类型,包括:byte:类似于 uint8,用于表示字节值。 结论本文详细介绍了 Go 语言的基础数据类型,包括整数类型、浮点数类型、布尔类型和字符串类型。了解不同的数据类型及其特点对于编写高效、可靠的代码非常重要。
前言 最近在读《Go 语言程序设计》这本书想通过看书巩固一下自己的基础知识,把已经积累的点通过看书学习再编织成一个网,这样看别人写的优秀代码时才能更好理解。 声明: Go语言主要有四种类型的声明语句:var、const、type和func,分别对应变量、常量、类型和函数。 数组或结构体等聚合类型对应的零值是每个元素或字段都是对应该类型的零值。 零值初始化机制可以确保每个声明的变量总是有一个良好定义的值,因此在Go语言中不存在未初始化的变量。 : 基本数据类型,它们可以用于构建程序中数据结构,是Go语言的世界的原子。 在Go语言中,一个map就是一个哈希表的引用,map类型可以写为map[K]V,其中K和V分别对应key和value。