likes
comments
collection
share

【第六篇】Golang 从菜鸟到大咖的必经之路_Go语言基本数据类型与转换

作者站长头像
站长
· 阅读数 15

一、基本数据类型的默认值:

一、基本介绍:

在Go中,数据类型都有一个默认值,当程序员没有赋值时,就会保留默认值,在Go中,默认值又叫零值。

二、基本数据类型的默认值如下:

数据类型默认值
整型0
浮点型0
字符串“”
布尔类型false
package main

import "fmt"

// 演示 golang 中 string 类型使用
func main() {

	var a int          //0
	var b float32      //0
	var c float64      //0
	var isMarried bool //false
	var name string    // ""
	// 这里的%v 表示按照变量的值输出
	fmt.Printf("a=%d\nb=%f\nc=%f\nisMarried=%v\nname=%v\n", a, b, c, isMarried, name)
}

【第六篇】Golang 从菜鸟到大咖的必经之路_Go语言基本数据类型与转换


二、基本数据类型的相互转换:

一、基本介绍:

Golang 和 Java / C 不同,Go 在不同类型的变量之间赋值时需要显式转换。也就是说Golang 中数据类型不能自动转换。

二、基本语法:

表达式T(v)将值v转换为类型T

T:就是数据类型,比如int32 ,int64,float32 等等

v:就是需要转换的变量


三、案例演示:

package main

import "fmt"

// 演示 golang 中的数据类型的转换
func main() {
	var i int = 100
	// 希望将 i => float
	var n1 float32 = float32(i)
	var n2 int8 = int8(i)
	var n3 int64 = int64(i) // 低精度-->高进度

	fmt.Printf("i=%v	n1=%v	n2=%v	n3=%v", i, n1, n2, n3)
}

【第六篇】Golang 从菜鸟到大咖的必经之路_Go语言基本数据类型与转换

四、基本数据类型相互转换的注意事项:

  1. Go 中,数据类型的转换可以是从,表示范围小---->表示范围大,也可以范围大---->范围小
  2. 被转换的是变量存储的数值(即值),变量本身的数据类型并没有变化。
  3. 在转换中,比如将int64,转换 int8【-128~127】,编译时不会报错,只是转换的结果是按溢出处理,和我们希望的结果不一样。因此在转换时,需要考虑范围。

五、课堂练习:

package main

func main() {
	// 课程练习,tab 按键整理格式
	var n1 int32 = 12
	var n2 int64
	var n3 int8

	n2 = n1 + 20 //int32	---> int64 错误
	n3 = n1 + 20 //int32	---> int8 错误
}
// int 32 + 最终结果还是 int32
---------------------------------正	确	版	本--------------------------------
package main

import "fmt"

func main() {
	// 课程练习,tab 按键整理格式
	var n1 int32 = 12
	var n2 int64
	var n3 int8

	// n2 = n1 + 20 //int32	---> int64 错误
	// n3 = n1 + 20 //int32	---> int8 错误

	n2 = int64(n1) + 20
	n3 = int8(n1) + 20
	fmt.Println("n2=", n2, "n3=", n3)
}

【第六篇】Golang 从菜鸟到大咖的必经之路_Go语言基本数据类型与转换

package main

import "fmt"

func main() {
	// 课程练习,tab 按键整理格式
	var n1 int32 = 12
	var n2 int64
	var n3 int8

	n4 = int8(n1) + 127
	n3 = int8(n1) + 128
	fmt.Println(n4)
}

【第六篇】Golang 从菜鸟到大咖的必经之路_Go语言基本数据类型与转换

package main

import (
	"fmt"
	_ "unsafe" //如果我们没有使用到一个包,但是有想要去掉,前面加一个 _ 表示忽略。
)

三、基本数据类型和string的转换:

一、基本介绍:

在程序开发中,我们经常讲基本数据类型转成String,或者将String 转成基本数据类型。

二、基本类型String类型:

方式一:

fmt.Sprintf("%参数",表达式)

函数介绍:

  • Sprintf根据format参数生成格式化的字符串并返回该字符串。
package main

import "fmt"

// 演示 golang 中基本数据类型转成string使用
func main() {

	var num1 int = 99
	var num2 float64 = 23.456
	var b bool = true
	var myChar byte = 'h'
	var str string //空的str

	// 使用第一种方法转换 fmt.Sprintf 方法

	str = fmt.Sprintf("%d", num1)
	fmt.Printf("str type %T str=%v\n", str, num1)
	// ==> str type string str=99
	fmt.Printf("str type %T str=%q\n", str, num1)
	// ==> str type string str='c'

	str = fmt.Sprintf("%f", num2)
	fmt.Printf("str type %T str=%v\n", str, str)
	// ==> str type string str=23.456000
	fmt.Printf("str type %T str=%q\n", str, str)
	// ==> str type string str="23.456000"

	str = fmt.Sprintf("%t", b)
	fmt.Printf("str type %T str=%v\n", str, str)

	fmt.Printf("str type %T str=%q\n", str, str)

	str = fmt.Sprintf("%c", myChar)
	fmt.Printf("str type %T str=%v\n", str, str)
	fmt.Printf("str type %T str=%q\n", str, str)
}

【第六篇】Golang 从菜鸟到大咖的必经之路_Go语言基本数据类型与转换

参数需要和表达式的数据类型相匹配

fmt.Sprintf()..会返回转换后的字符串


方式二:

使用strconv包的函数

package main

import (
	"fmt"
	"strconv"
)

// 演示 golang 中基本数据类型转成string使用
func main() {

	var num3 int = 99
	var num4 float64 = 23.456
	var b2 bool = true
	var str string //空的str

	// 使用第二种方法转换 strconv 方法
	str = strconv.FormatInt(int64(num3), 10)
	fmt.Printf("str type %T str=%q\n", str, str)

	str = strconv.FormatFloat(num4, 'f', 10, 64)
	//	strconv.FormatFloat(num4, 'f', 10, 64)
	//  说明:'f' 格式
	// 10:表示小时位数保留10位
	// 64:表示这个小数是float 64
	fmt.Printf("str type %T str=%q\n", str, str)

	str = strconv.FormatBool(b2)
	fmt.Printf("str type %T str=%q\n", str, str)

	// strvonv 包中有一个函数
	var num5 int64 = 4567
	str = strconv.Itoa(int(num5))
	fmt.Printf("str type %T str=%q\n", str, str)
}

【第六篇】Golang 从菜鸟到大咖的必经之路_Go语言基本数据类型与转换


三、string 类型转基本数据类型:

package main

import (
	"fmt"
	"strconv"
)

// 演示 golang 中string 转成基本数据类型
func main() {

	var str string = "true"
	var b bool
	b, _ = strconv.ParseBool(str)
	// go 会返回多个值
	// func strconv.ParseBool(str string) (bool, error)
	// 说明:
	// 1. strconv.ParseBool(str) 会返回另两个值 (value bool,err, error)
	// 2. 因为我只想获取到value bool .不想获取到 err 所以我使用 _ 忽略
	fmt.Printf("b byte %T b=%v", b, b)
	var str2 string = "1234590"
	var n1 int64
	var n2 int
	n1, _ = strconv.ParseInt(str2, 10, 64)
	// 这里说明一下,ParseInt 方法返回int64,err,所以是不能使用int来接收int64的这是强制规定的,可以去看一下文档
	// 然后就说bitSize参数,这个参数是指定你所转换的数值能不能满足birSize范围大小,如果不满足你指定的bitSize范围,那么err会得到错误信息
	fmt.Printf("n1 byte %T n1=%v\n", n1, n1)
	n2 = int(n1)
	fmt.Printf("n1 byte %T n2=%v\n", n2, n2)

	var str3 string = "123.456"
	var f1 float64
	f1, _ = strconv.ParseFloat(str3, 64)
	fmt.Printf("f1 byte %T f1=%v\n", f1, f1)

}

【第六篇】Golang 从菜鸟到大咖的必经之路_Go语言基本数据类型与转换


四、string 转基本数据类型的注意事项:

在将string 类型转成基本类型时,要确保String 类型能够转换成有效数据,比如我们可以把“123”,转成一个整数,但是不能把“hello”转成一个整数,如果这样做,Golang 直接将其转成0,其它类型也是一样的道理,float ---->0 bool---->false