当前位置: 首页 > news >正文

Go入门之基本数据类型

    var a int8 = 10

	fmt.Println(unsafe.Sizeof(a))

	var c1 int32 = 10
	var c2 int64 = 20
	fmt.Println(int64(c1) + c2)

	c3 := 100
	fmt.Printf("%b\n", c3)
	fmt.Printf("%o\n", c3)
	fmt.Printf("%x\n", c3)

unsafe.Sizeof()函数可以输出变量占内存大小,在进行运算时需要将类型统一,%b,%d,%o,%x为二进制,十进制,八进制,十六进制输出。

int8-int64为有符号整型,uint8-uint64为无符号整型

    var c4 float32 = 3.1415926
	fmt.Printf("%v %f %.2f\n", c4, c4, c4)
	var c5 float32 = 3.2e-2
	fmt.Printf("%v\n", c5)

浮点数有32和64两种,.%xf表示保留几位小数格式化输出,可以用科学计数法定义变量

bool类型为true和false

    var str = "c:\\66\"6"
	fmt.Printf("%v\n", str)
	var str1 string = `abc
	def
		dsad
	` //反引号
	fmt.Printf("%v\n", str1)
	fmt.Println(len(str1))

\为转义字符,可以利用``来定义多行字符串

len()求字符串的长度,注意中文每个占3个字节

不能用sizeof()算空间

拼接字符串:
第一种用+

第二种用fmt.Sprintf:

	var str3 = fmt.Sprintf("%v%v", str, str1) //+也行
	fmt.Println(str3)

strings包的一些有用方法:

    var str4 = "1-2-3" //切片
	arr := strings.Split(str4, "-")
	fmt.Println(arr)
	var str5 = strings.Join(arr, "*")
	fmt.Println(str5)
	var flag = strings.Contains(str4, "-")
	fmt.Println(flag)
	flag = strings.HasPrefix(str4, "-")
	fmt.Println(flag)
	flag = strings.HasSuffix(str4, "-")
	fmt.Println(flag)
	num := strings.Index(str4, "-") //查找不到返回-1
	fmt.Println(num)
	num = strings.LastIndex(str4, "-")
	fmt.Println(num)

Split把字符串转换成切片,Join把切片连接成字符串,Contains表示是否包含另一个字符串,Has两个函数表示前缀后缀有没有相应字符串,Index和LastIndex返回最初和最后匹配到的子串的位置

字符类型,只有byte和rune类型

    var e = 'a'
	fmt.Printf("%v %T\n", e, e) //字母ASCII码 汉字utf-8用unicode编码的十进制
	fmt.Printf("%c %T\n", e, e)
	str6 := "你好go"
	for i := 0; i < len(str5); i++ {
		fmt.Printf("%v(%c)", str6[i], str6[i])
	}
	fmt.Println()
	for _, v := range str6 { //用中文需要用这种循环
		fmt.Printf("%v(%c)", v, v)
	}
	str7 := "pig"
	bytestr := []byte(str7)
	bytestr[0] = 'b'
	fmt.Println(string(bytestr))
	str8 := "大pig"
	runestr := []rune(str8)
	runestr[0] = '小'
	fmt.Println(string(runestr))

%v代表输出ASCII码或unicode编码,%c表示输出原字符。如果字符串里有除字母以外的字符需要遍历时,需要用range循环。

修改字符串需要将字符串转换成字符数组,再转换回去

其他类型转换成string类型

第一种方法通过fmt.Sprintf

    var i1 int = 20
	var i2 float64 = 12.456
	var i3 bool = true
	var i4 byte = 'a'
	str9 := fmt.Sprintf("%d", i1)
	fmt.Printf("%v %T\n", str9, str9)
	str9 = fmt.Sprintf("%f", i2)
	fmt.Printf("%v %T\n", str9, str9)
	str9 = fmt.Sprintf("%t", i3)
	fmt.Printf("%v %T\n", str9, str9)
	str9 = fmt.Sprintf("%c", i4)
	fmt.Printf("%v %T\n", str9, str9)

第二种方法strconv.Format

	str9 = strconv.FormatInt(int64(i1), 10)
	fmt.Printf("%v %T\n", str9, str9)
	str9 = strconv.FormatFloat(float64(i2), 'f', 4, 64)
	fmt.Printf("%v %T\n", str9, str9)
	str9 = strconv.FormatUint(uint64(i4), 10)
	fmt.Printf("%v %T\n", str9, str9)

string转换成其他类型

    str10 := "1234"
	qq, _ := strconv.ParseInt(str10, 10, 64)
	fmt.Println(qq)
	str11 := "1234.234"
	qqq, _ := strconv.ParseFloat(str11, 64)
	fmt.Println(qqq)

相关文章:

  • 并查集基础+优化(下标从0开始)
  • win32汇编环境,对话框中使用月历控件示例二
  • 第二章:逻辑代数与逻辑门电路——数字世界的“语言”与“积木”
  • 【机器学习】深入浅出KNN算法:原理解析与实践案例分享
  • Dav_笔记14:优化程序提示 HINTs -4
  • 自动驾驶---基于深度学习模型的轨迹预测
  • TS语言自定义脚手架
  • 神经网络新手入门(1)目录
  • 责任链模式解析FilterChain
  • 2000-2020年年汇率平均价数据
  • Ubuntu 22.04.5 LTS 安装企业微信,(2025-02-17安装可行)
  • 二十多年前的苹果电源Power Mac G4 Mdd 电源接口
  • 宝塔docker 安装oracle11G
  • 【097】基于51单片机排队叫号系统【Keil程序+报告+原理图】
  • 4.【线性代数】——矩阵的LU分解
  • STC 51单片机63——关于STC8H的ADC通道切换问题
  • 软硬链接?
  • 附录2:组维接口信息大全
  • 过于依赖chatgpt编程会有哪些弊端?
  • IOT-CVE-2018-17066(D-Link命令注入漏洞)
  • 做美工的网站/推广普通话手抄报文字内容
  • 做任务的电脑网站/公众号推广平台
  • 榆垡网站建设/设计一个公司网站多少钱
  • 深圳网站建设工作室/阜新网站seo
  • 临邑建设局网站/淄博seo网络公司
  • 谁有永久免费的服务器/开鲁网站seo不用下载