go 的基本数据类型,值类型 引用类型

 基础语法  2022-05-01  admin  833  1124

类型长度(字节)默认值说明
bool1false一个字节,值是true或者false,不可以用0或者1表示
byte10byte占用8位,一个字节,相当于uint8,不带符号位
rune40Unicode Code Point, int32 等价于int32类型。
int, uint4或8032 或 64 位,根据平台不同是32位或者64位
int8, uint810-128 ~ 127, 0 ~ 255,byte是uint8 的别名
int16, uint1620-32768 ~ 32767, 0 ~ 65535
int32, uint3240-21亿~ 21亿, 0 ~ 42亿,rune是int32 的别名
int64, uint6480
float3240.0float32小数精确到7位
float6480.0由于没有double类型,所以float64就是double。float64小数精确到15位
complex648
复数类型
complex12816
复数类型
uintptr4或8

以存储指针的 uint32 或 uint64 整数,指针的长度就是随平台而变

array

值类型
struct

值类型
string
""UTF-8 字符串
slice
nil引用类型
map
nil引用类型
channel
nil引用类型
interface
nil接口
func
nil函数
测试:

package main

import "fmt"

type Student struct {
	Name string
	Age  int
}

func main() {
	// 值类型(value type): array struct
	arr := [3]string{"0", "1", "2"}
	st := Student{"小明", 20}

	// 引用类型(reference type): slice map channel
	sli := []string{"0", "1", "2"}
	ma := map[string]string{
		"name": "小红",
		"age":  "12",
	}

	a, b, c, d := referenceTest(arr, st, sli, ma)

	fmt.Println("原  值:", arr, st) // 原  值: [0 1 2] {小明 20}       原始值未改变
	fmt.Println("返回值:", a, b)     // 返回值: [0 1 22] {小明2 20}     原始值和返回值不一致,原始值未改变

	fmt.Println("原  值:", sli, ma) // 原  值: [0 1 二] map[2:二 age:12 name:小红2]     原始值被改变
	fmt.Println("返回值:", c, d)     // 返回值: [0 1 二] map[2:二 age:12 name:小红2]     原始值和返回值一致,原始值被改变
}

func referenceTest(arr [3]string, st Student, s []string, m map[string]string) ([3]string, Student, []string, map[string]string) {
	// 值类型
	arr[2] = "22"
	st.Name = "小明2"

	// 引用类型
	s[2] = "二"
	m["name"] = "小红2"
	m["2"] = "二"

	return arr, st, s, m
}


如果文章对您有帮助,点击下方的广告,支持一下作者吧!

相关推荐


js 数组对象根据指定字段排序

js 数组对象根据指定字段排序

阿里巴巴java开发手册MySQL 数据库开发规范

阿里巴巴java开发手册MySQL 数据库开发规范

ajax下载二进制文件,ajax下载excel文件

开发时有时需要下载文件,如生成excel文件等,在下载过程中需要加上动画或loading效果,由于jquery的ajax返回数据类型不支持二进制,但是原生的js是可以支持返回二进制数据的,所有需要封装ajax下载方法。/** *ajax下载文件 *@paramurl文件生成地址,在浏览器生成文件即header保存文件 *@paramdata其它数据 *@paramfile_name文件名称

SQL分析工具soar建议的SQL重写规则

重写规则[toc]dml2selectDescription:将数据库更新请求转换为只读查询请求,便于执行EXPLAINOriginal:DELETEFROMfilmWHERElength>100Suggest:select*fromfilmwherelength>100star2columnsDescription:为SELECT *补全表的列信息Original:SELECT*FR