欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Chapter02 Golang变量以及数据类型

程序员文章站 2022-03-22 23:17:09
...

一、变量使用方式
1.指定变量类型,申明后不是用默认值

(1)int 默认 0
(2)string默认 空串
(3)float默认 float64 0
(4)bool faulse

2.根据值判断类型
ar num = 10.11
3.省略var

且‘=’左边的变量不应该是已经申明的,即不能重复申明,不然会报错。

name:="tom”
4.可多变量申明

① 直接法

var n1,n2,n3 int 

② 对应法

var n1,n2,n3 = 100,"tom",888

③ 类型推导法

 n1,n2,n3 := 100,"tom",888

④ 一次性申明全局变量
即在函数外声明变量

二、 “+”的使用

(1)数值:数学加法
(2)字符串:拼接

三、数据类型介绍
(一)基本数据类型以及介绍
1.数值型

(1)整数型

  1. 有些有符号位eg: int8
    Chapter02 Golang变量以及数据类型
  2. 定义变量下 保小不保大,节省空间,但是要溢出,结果可能不同,所以考虑范围。
  3. 1bite = 8bit
  4. 查看a变量的数据类型和占用 字节 大小
    数据类型
fmt.Printf("%T",a)

字节(引包)

package main
import (
	"unsafe"
)
func main(){
var a int64 = 60.23
fmt.Printf("%d",unsafe.Sizeof(a))
}

(2)浮点型 float32 float64(小数类型)
5. 浮点数都是有符号位
6. 尾数位可能精度损失
7. 科学计数法

num :=5.1234e2 //10^2
num :=5.1234E2 //10^2
num :=5.1234E-2 //10^(-2)

Chapter02 Golang变量以及数据类型

2.字符型(char)
  1. 无专门字符型,只能用byte,保存单个字符,所以汉字存不下一位,可以用rune保存(int32别名),表示一个unicode码点。
    (go:utf-8)
var c1 byte = 'a' 
  1. 直接输出字符,则输出码值
fmt.Printf("c1=",c1)
  1. 输出字符值,则格式化输出
fmt.Printf("c1=%c",c1)
  1. 汉字
var c3 byte = "北" //溢出
fmt.Printf("c1=%c",c1)
var c3 int = "北" //成功
fmt.Printf("c1=%c",c1)

如果保存的字符是在ASCII,直接保存到byte,若>225,则考虑int
注意输出值时,格式化输出
查看码值 http://www.mytju.com/classcode/tools/encode_utf8.asp

3.布尔bool
  1. 真假逻辑,只占一个字节
var b = false
  1. 应用:
    if
    for
4.字符串 string
  1. go的字符串由字节组成
var adress string = "中国 hello"
  1. golang字符串是不可变的,一旦赋值不可更改
eg: adress[0] = 'a' 是错的
  1. 双引号识别转义字符
  2. 反引号以字符原生形式输出,包括换行和特殊字符,例如输出源代码,防止攻击。

str:=`
package main
import (
	"fmt"
	"unsafe"
)
func main(){
	var b =false
	fmt.Println("b=",b)
}
`
fmt.Printfln(str)
  1. 当拼接很长时,可以分行写,但每一行必须以+结尾。
    Chapter02 Golang变量以及数据类型
(二)数据结构
(1)指针
(2)数组
(3)结构体
(4)管道
(5)函数
(6)切片
(7)接口
(8)map
(三)数据类型转换(基本数据类型)
var i int32 = 100 //赋值
var n1 float32 = float32(i) //转换
  1. 被变量转换的是变量存储的数据,变量本身的数据结构没有变
  2. int64->int8,不会报错,但是会按照溢出处理
  3. 基本数据类型与string的转换
    ①数据类型转string
    (1)fmt.Sprintf("%参数",表达式) ————推荐
    查看官方文档 https://studygolang.com/pkgdoc
    Chapter02 Golang变量以及数据类型
    Chapter02 Golang变量以及数据类型
    Chapter02 Golang变量以及数据类型
//数据相互转换
package main
import (
	"fmt"
	_ "fmt"
	_ "unsafe"
)
func main(){
	var num1 int =90
	var num2 float64 = 23.456
	var b bool = true
	var myChar byte = 'h'
	var str string  //空的字符串

	//方法一
	str = fmt.Sprintf("%d",num1)
	fmt.Printf("str type %T str=%q\n" ,str,str)

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

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

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

(2)strconv包的使用

//数据相互转换
package main
import (
	"fmt"
	_ "fmt"
	"strconv"
	_ "unsafe"
)
func main(){
	var num1 int =90
	var num2 float64 = 23.456
	var b bool = true
	var myChar byte = 'h'
	var str string  //空的字符串

	//方法二 strconv函数
	var num3 int =90
	var num4 float64 = 23.456
	var b2 bool = true

	str = strconv.FormatInt(int64(num3),10)
	fmt.Printf("str type %T str=%q\n" ,str,str)

	str = strconv.FormatFloat(num4,'f',10,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)

}

②string转数据类型
未完待续,估计2019/11/16完成基础系列