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

相关推荐
用户99045017780096 分钟前
若依工作流主流方案对接
后端
触底反弹21 分钟前
🚀 Node.js path 和 fs 模块,从回调地狱到 async/await 的进化之路!
javascript·后端·node.js
Csvn1 小时前
Python 开发技巧 · 生成器(Generator)进阶 —— 从 yield 到 yield from,写出省内存的生产者-消费者模式
后端·python
geovindu1 小时前
CSharp: Dijkstra Algorithms
开发语言·后端·算法·c#
掘金者阿豪2 小时前
听书别再被会员和广告打断:把NAS变成自己的私人有声图书馆
后端
拉长的苗条3 小时前
细说 ASP.NET Cache 及其高级用法
后端·asp.net
一路向北North3 小时前
Spring Security OAuth2.0(19):JWT令牌
java·后端·spring
用户6757049885023 小时前
Beanstalkd 实战指南:原来延迟队列、异步任务可以如此简单丝滑!
后端·消息队列
MacroZheng4 小时前
给Claude Code装上这款炫酷的HUD插件,状态信息就一目了然了!
java·人工智能·后端
达达尼昂4 小时前
编码智能体中的模型选择与执行深度
人工智能·后端·程序员