Go语言学习笔记(二)

1.整型:

1.1:整型分为两大类,有符号数和无符号数.一个整数的存在形式是一定长度的二进制数据.有符号数利用二进制最高位表示符号(正或负).除最高位以外的数值都用来表示数值大小.无符号数不会出现负数.所有二进制数都用来表示大小.

2.浮点型:

2.1: 浮点型往往用来表示小数.分为单精度和双精度.关键字分为float32和float64.

2.2类型推导:

css 复制代码
package main

import (
	"fmt"
	"reflect"
)

func main() {

	var a float32

	//未显示声明变量b的数据类型
	b := 1.4

	fmt.Println("显示声明,a的类型是: ", reflect.TypeOf(a))

	//类型推导的结果与操作系统平台位数相关
	fmt.Println("类型推导,b的类型是:  ", reflect.TypeOf(b))
}

执行结果:

2.3浮点类型比较:

css 复制代码
package main

import (
	"fmt"
	"math/big"
)

func main() {

	floata := 3.14

	floatb := 3.15

	//用big.newFloat()floata.
	result := big.NewFloat(floata).Cmp(big.NewFloat(floatb))

	if result < 0 {
		fmt.Println("a小于b")
	}

	if result == 0 {
		fmt.Println("a等于b")
	}

	if result > 0 {
		fmt.Println("a大于b")
	}
}

执行结果:

3.布尔类型:

用bool关键字来声明一个布尔类型的变量.取值有true和false两种.

go 复制代码
package main

import (
	"fmt"
)

func main() {

	//声明一个布尔类型变量的方式.
	var success = true

	if success {
		fmt.Println(success)
	}

	var result bool

	result = true

	fmt.Println(result)
}

执行结果:

4.字符型:

字符型指的是单个字符,这里的字符不仅指ASCII码,也包含了中文及其他文言文字符.

go 复制代码
package main

import (
	"fmt"
)

func main() {

	//	声明字符型变量.
	var c = '中'

	fmt.Println(c)

	fmt.Printf("%c\n", c)

	fmt.Println(string(c))
}

执行结果:

添加图片注释,不超过 140 字(可选)

第一个输出的内容是20013,这个是字符'中'转换为UTF-8编码后的十进制数字.

5.字符串类型:

可以使用关键字string来声明一个字符串类型.

go 复制代码
package main

import (
	"fmt"
	"reflect"
)

func main() {
	var s string
	s = "go语言字符串"

	fmt.Println("s的内容为: ", s, "\n")

	fmt.Println("s的类型为: ", reflect.TypeOf(s))
}

执行结果:

5.2:字符串内存中的存储:

go 复制代码
package main

import (
	"fmt"
)

func main() {

	//	字符串在内存中的存储
	var s string

	s = "字符串"

	len := len(s)

	fmt.Println(len)
	for i := range len {
		fmt.Printf("%X ", s[i])
	}
}

执行结果:

从输出结果看,变量长度为9.汉字一般用三个字节存储,所以为9.

5.3:rune处理:

go 复制代码
package main

import (
	"fmt"
	"unicode/utf8"
)

func main() {

	//	字符串在内存中的存储
	var s string

	s = "字符串"

	//rune处理文本
	n := utf8.RuneCountInString(s)

	fmt.Println("字符串的长度为:", n)

	for _, c := range s {
		fmt.Printf("%T, %X", c, c)
	}
}

执行结果:

rune主要对应Unicode的字符.rune在表现形式上是一个数字(int32),所以打印出来是这样的.

6.数组类型:

6.1数组特点:

所有元素存储于连续内存.

数组可以直接利用位置索引来访问元素.

数组大小不可变更.

6.2声明数组变量:

go 复制代码
package main

import (
	"fmt"
)

func main() {

	//	声明数组
	a := [5]int{1, 2, 3, 4, 5}

	fmt.Println(a)

}

6.3索引访问元素:

go 复制代码
package main

import (
	"fmt"
)

func main() {

	//	声明数组
	a := [5]int{1, 2, 3, 4, 5}

	fmt.Println("索引位置2元素为: ", a[2])

	a[2] = 0

	fmt.Println(a)

}

执行结果:

6.4数组作为参数:

css 复制代码
package main

import (
	"fmt"
)

func main() {

	//	声明数组
	a := [5]int{1, 2, 3, 4, 5}

	change(a)

	fmt.Println(a)
}

func change(a [5]int) {
	a[2] = 100
	fmt.Println(a)
}

执行结果:

通过输出可以看出,传入函数的数组值并未发生改变.证明传入函数时实际上是复制了一个数组.

语雀地址www.yuque.com/itbosunmian...?

《Go.》 密码:xbkk 欢迎大家访问.提意见.

相关推荐
Zadig3 分钟前
Zadig 全面支持 CRD,至此所有 K8s 资源类型均可一键发布!
后端·devops
得物技术12 分钟前
EP-Harness:从个人 AI Coding 到团队级 Agent 工作流|得物技术
后端·程序员·架构
用户1257585243615 分钟前
对象存储 URL 为什么别到处拼:后台附件预览要验这一层
后端·go·ai编程
步行cgn22 分钟前
MyBatis 一对多关联映射详解
java·后端
阿弱25 分钟前
pi 扩展机制:加载、执行与能力
后端·llm·agent
省长1 小时前
Sa-Token v1.46.0 发布 🚀,来看看有没有令你心动的功能!
java·后端·开源
tech_zjf2 小时前
当 AI 把 Next.js Route 越写越快:我为什么做了 next-route-kit
前端·后端
魔兽大山哥3 小时前
提示词注入很热闹:NL2SQL 里它打得穿 Prompt,打不穿执行层
后端
智能架构人生3 小时前
Java开发者技能如何迁移到Kotlin
后端
程序员老赵3 小时前
Docker 部署禅道 ZenTao:轻松搭建研发项目管理平台
前端·后端·github