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 欢迎大家访问.提意见.

相关推荐
IT_陈寒1 小时前
React子组件莫名其妙重渲染?你可能漏了这个Hook
前端·人工智能·后端
小兵金林1 小时前
AI 生成代码的思考与实践
后端·ai编程
码事漫谈1 小时前
DeepSeek 明天又降价(涵历史价格对比)
后端
前端精髓1 小时前
NestJS 是什么(对着 Spring Boot 一起学习)
spring boot·后端·学习
国奉1 小时前
从零设计一个 iOS 文件浏览器:Sandbox、FileManager、Document Picker 与文件架构
后端
前端兰博2 小时前
04-数据库-MySQL
后端·mysql
她的男孩2 小时前
接口加密做成框架级能力有多难?我扒了 3600 行源码:从 RSA 握手到落库密文迁移
人工智能·后端·架构
掘金挖土2 小时前
前端手摸手跑路之 AI 应用开发(二)
前端·后端
遨翔在知识的海洋里2 小时前
nest(5)-文件上传和静态资源
后端
遨翔在知识的海洋里3 小时前
nest(3)-jwt和RBAC
后端