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

相关推荐
陈随易10 小时前
VSCode的Copilot扩展支持接入DeepSeek,Kimi了!
前端·后端·程序员
我不是外星人12 小时前
有了 Harness Engineering ,真的还需要研发工程师吗?
前端·后端·ai编程
candyTong12 小时前
RTK 技术原理:一次典型会话里,80% 上下文是怎么省下来的
javascript·后端·架构
Rust研习社14 小时前
组合真的优于继承吗?为什么 Rust 和 Go 都拥抱组合舍弃继承?
后端·rust·编程语言
IT_陈寒14 小时前
JavaScript的闭包把我坑惨了,说好的内存会自动回收呢?
前端·人工智能·后端
CaffeinePro15 小时前
Pydantic深度使用:数据校验、枚举、ORM映射
后端·fastapi
Chenyiax16 小时前
从 Chat 到 Responses:OpenAI API 抽象为什么变了?
后端
MariaH16 小时前
Koa和Express的区别
后端
MariaH16 小时前
Koa框架的使用
后端
luckdewei17 小时前
那个用 passlib 做认证的新同事,上线第一天就把用户密码写进了日志
后端