package main; import ( "fmt" "errors" ) func main() { //bool类型 var isRun = false; = 4; var e uint16 = 5; var f uint32 = 6; //rune是int32的别称,byte是uint8的别称 var g rune = 7; 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 !
函数的返回值 可以一次返回多个返回值,Go 语言中如果是单返回值,可以直接在函数声明的括号后面增加数据类型。 func sum(a, b int) int //声明并定义一个返回值为int数据类型的函数 func sum(a, b int) (int, string) //声明并定义一个返回值为int和string 数据类型的函数 使用 return+ 返回值返回 import "fmt" func sumAndProduct(a, b int) (int, int) { c := a + b d := a ("a + b = ", sum) fmt.Println("a * b = ", product) } a + b = 3 a * b = 2 defer 的逆序执行 defer 关键字就是 Go
在 Printf 方法中,使用 %T 格式说明符(Format Specifier),可以打印出变量的类型。Go 的 unsafe 包提供了一个 Sizeof 函数,该函数接收变量并返回它的字节大小。 如果实部和虚部都是 float64 类型,则函数会返回一个 complex128 类型的复数。 还可以使用简短语法来创建复数: c := 6 + 7i 下面我们编写一个简单的程序来理解复数。 c1的实部为 5,虚部为 7。c2 的实部为8,虚部为 27。c1 和 c2 的和赋值给 cadd ,而 c1 和 c2 的乘积赋值给 cmul。 类型转换 Go 有着非常严格的强类型特征。Go 没有自动类型提升或类型转换。我们通过一个例子说明这意味着什么。 i 的类型是 int ,而 j 的类型是 float64 ,我们正试图把两个不同类型的数相加,Go 不允许这样的操作。
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) 像数值类型之间的转换都可以这样之间转换。 strconv.Atoi(str) // 在转为intfmt.Printf("byteNum type:%T,value:%v\n", byteNum, byteNum)}运行结果:image.png7、
Retiever) string { return r.Get("123") } duck typing 概念 像鸭子走路,像鸭子叫(长得像鸭子),那么就是鸭子 描述失误的外部行为而非结构 严格来说go 属于结构化类型系统,类似duck typing go语言中的duck typing 同时实现多个接口 同时具有python,c++的duck typing的灵活性 具有Java的类型检查 接口 接口由使用者定义
引言上篇我们了解了Go语言的《字典类型》,本篇主要了解函数和方法。主要如下:主要内容在Go语言中,函数类型是一等类型,可以把函数当做一个值来传递和使用。 命名的结果其名称可以作为附属于该函数类型声明的文档的一部分,方便其他阅读的人员了解其含义。一个函数类型可以有一个结果声明的列表,这是因为Go语言的函数类型可以有多个结果,这是Go语言的先进特性之一。 属性和基本操作函数作为Go语言的数据类型之一,可以把函数作为一个变量的类型。 在Go语言中,常常把接收者类型是某个自定义数据类型的方法叫做该数据类型的值方法,而把接收者类型是某个自定义数据类型对应的指针类型的方法叫作该数据类型的指针方法。 结语本篇就聊到这里,下篇继续未完的Go语言数据类型…最后附上知名的Go语言开源框架(每篇更新一个): Docker: 一个软件部署解决方案,也是一个轻量级的应用容器框架。
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 布尔类型主要用于后面讲解的条件判断,关于条件判断,我们在这里先举一个生活中的案例,大家可以理解一下: 2:浮点型 Go语言的浮点型: float32 小数位精确到7位 float64 小数位精确到15 ,字符类型,整型等都指定了对应的格式化,那么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 的数据类型及其使用场景可以更好地理解它们各自的优势和适用场景
7. 类型检查机制 所谓类型检查机制,就是编程语言编译器在做类型检查时,所秉持的原则,以及表现出的行为。 ? 7.1 类型推断 TS作为一门灵活的强类型语言:如果你声明一个变量,不一定都要做类型注解,ts会根据某些规则,自动推断出变量的类型。 先来看基础类型的推断: let name1:string; let name2 = ''; // 推断为string let name // 推断为any let num = 1 // 推断为number 7.2 类型兼容性 当一个类型Y可以被赋值给另一个类型Y时,我们就可以说,X兼容Y。 在此基础上,如果拥有相同的实例成员(在上面例子中,相同实例成员为id),那么二者可以相互兼容。
点击阅读原文可访问《Go语言程序设计》电子书 前言 最近在读《Go 语言程序设计》这本书想通过看书巩固一下自己的基础知识,把已经积累的点通过看书学习再编织成一个网,这样看别人写的优秀代码时才能更好理解 声明 Go语言主要有四种类型的声明语句:var、const、type和func,分别对应变量、常量、类型和函数。 例如: var s string fmt.Println(s) // "" 基础类型 基础类型,包括:数字、字符串和布尔型。 // "e3 83 97 e3 83 ad e3 82 b0 e3 83 a9 e3 83 a0" r := []rune(s) fmt.Printf("%x\n", r) // "[30d7 基本数据类型,它们可以用于构建程序中数据结构,是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格式编码 64 位整型 (0 到 18446744073709551615) 5 int8 有符号 8 位整型 (-128 到 127) 6 int16 有符号 16 位整型 (-32768 到 32767) 7 为了方便定义变量,Go也定义了以下数据类型: 序号 类型和描述 1 byte 类似 uint8 2 rune 类似 int32 3 uint 32 或 64 位 4 int 与 uint 一样大小 5 uintptr 无符号整型,用于存放一个指针 rune和unitptr是Go独创,其他类型别的编程语言也有,基本上可以说是博采众长。
Go语言中内置了大量的数据类型,包括基本数据类型和符合数据类型,其中基本数据类型有如下七种: 布尔型:bool 整形:byte,int,int8,int16,int32,int64,uint,uint8 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 + b) // 7 fmt.Println("a - b = ", a - b) // 3 fmt.Println("a * b = ", a * b) // 10 fmt.Println(
Go 基础之基本数据类型 一、整型 所谓整型,主要用来表示现实世界中整型数量,比如年龄,分数,排名等等 Go 语言整型可以分为平台无关整型和平台相关整型这两种,它们的区别主要就在,这些整数类型在不同 2.2 浮点类型 Go语言支持两种浮点型数:float32和float64。这两种浮点型数据格式遵循IEEE 754标准。 浮点类型与前面的整型相比,Go 提供的浮点类型都是平台无关的。 我们看到,为了整数部分仅保留一个 1,小数点向左移了 7 位,这样指数就为 7,尾数为 00010111101b。 步骤三:计算阶码。 这样在这个例子中,阶码 = 7 + 127 = 134d = 10000110b。float64 的双精度浮点数的阶码计算也是这样的。 八、类型转换 Go语言中只有强制类型转换,没有隐式类型转换。该语法只能在两个类型之间支持相互转换的时候使用。
java基础(7)-Java数据类型转换 1.数据类型转换 整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。 转换从低级到高级。 : 运行结果: d:23.7 f:-45.89 a:23 b:-45 必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型 ,同样float数据类型的位数为32,可以自动转换为64位的double类型。 int后的值等于"+i1); //定义一个char类型 char c2 = 'A'; //char 类型和 int 类型计算 int i2 2.强制类型转换 3.隐含强制类型转换 1.整数的默认类型是 int。 2.小数默认是 double 类型浮点型,在定义 float 类型时必须在数字后面跟上 F 或者 f。
本篇博客将深入探讨Go语言中的数据类型转换,从基本概念到类型转换的方法和最佳实践,帮助您理解如何在Go中进行安全、有效的数据类型转换。 隐式转换 在一些情况下,Go语言会自动执行隐式转换。例如,将整数值赋给浮点数变量时,会自动进行类型转换。 在Go语言中,使用括号将目标类型括起来,将要转换的值放在括号前面。 type Celsius float64 var temperature Celsius = 25.5 类型转换 自定义类型与其基础类型之间需要显式转换。 总之,数据类型转换是Go语言中不可或缺的一部分,对于构建强大、稳定的程序至关重要。通过深入理解和掌握不同类型转换的方法,您将能够更加自信地进行数据处理,编写出高质量、可靠的Go语言代码。
,这块指的类型不是元素类型,而是数组长度和元素类型决定数组的类型,例如:[2]int{1, 2} 它的类型是 [2]int ,不要误以为是 array 。 数组拷贝 在 Go 语言中,数组是值类型,也就是说在传递过程中会自动拷贝一份。 // collection/mult-array.go for i := 0; i < 4; i++ { for j := 0; j < 3; j++ { if students ][j] == 0 { fmt.Printf("%d行%d列学生旷课", i+1, j+1) } } } // 输出 1行3列学生旷课 省略变量 在 Go , v := range array { ... } // 省略后 a, _ := fun1() for _, v := range array { ... } 总结 本篇讲解了 Go
,这块指的类型不是元素类型,而是数组长度和元素类型决定数组的类型,例如: [2]int{1, 2} 它的类型是 [2]int ,不要误以为是 array 。 数组拷贝 在 Go 语言中,数组是值类型,也就是说在传递过程中会自动拷贝一份。 // collection/mult-array.go for i := 0; i < 4; i++ { for j := 0; j < 3; j++ { if students ][j] == 0 { fmt.Printf("%d行%d列学生旷课", i+1, j+1) } } } // 输出 1行3列学生旷课 省略变量 在 Go , v := range array { ... } // 省略后 a, _ := fun1() for _, v := range array { ... } 总结 本篇讲解了 Go