GO语言笔记1-变量与基本数据类型

发布时间:2024年01月05日

变量使用步骤

  1. 声明
  2. 赋值
  3. 使用
package main
import "fmt"
func main(){
	var age int //声明一个 int类型的变量叫age
	age = 18 //给变量用 = 赋值
	fmt.Println(age) //使用变量  输出变量的值
}

编译运行输出变量值

变量的四种使用方式

package main
import "fmt"
func main(){
	var num1 int = 18 //1.指定变量的类型并且赋值
    fmt.Println(num1) //使用变量  输出变量的值

	var num2 int //2定变量类型,不赋值,使用默认值
	fmt.Println(num2 ) //使用变量  输出变量的值

    var num3="tom" //3定变量不指定类型,根据后边的赋值自动确认类型
	fmt.Println(num3 ) //使用变量  输出变量的值

    num4:="男" //4.省略 var 使用 :=,不能写成 = 
	fmt.Println(num4 ) //使用变量  输出变量的值
}

编译运行

一次性声明多个变量?

package main
import "fmt"
func main(){ 
    //未赋值的
    fmt.Println("未赋值的####################")
	var n1,n2,n3 int
    fmt.Println(n1)
    fmt.Println(n2)
    fmt.Println(n3)
    //赋值的
    fmt.Println("赋值的####################")
    var n4,n5,n6 = 10,"小明",7.8
    fmt.Println(n4)
    fmt.Println(n5)
    fmt.Println(n6)
}

编译运行?

变量的类型

  1. ?定义在函数内的变量叫做局部变量

  2. 定义在函数外部的变量叫做全局变量
package main
import "fmt"
//第一种声明方式 一个一个声明
var n1 = 100
var n2 = 9.7

//第二种声明方式,一次多个
var (
	n3 = 500
	n4 = "hello"
)
func main(){ 
    fmt.Println(n1)
    fmt.Println(n2)
    fmt.Println(n3)
    fmt.Println(n4)
}

变量的数据类型?

整数类型

【1】整数类型介绍:
简单的说,就是用于存放整数值的,比如10,-45,6712等等。

【2】有符号整数类型:
【3】无符号整数类型:

【4】其他整数类型:

?

Golang的整数类型,默认声明为int类型?

浮点型

?浮点型底层存储:符号位+指数位+尾数位,尾数位只存了一个大概,有可能会出现精度丢失所以通常建议使用 float64,默认也是float64

浮点数可以用十进制表示形式,也可以用科学计数法

//十进制
var num float32= 3.14

//科学计数法
var mum float64 = 314E-2
var num float64 = 314e-2

字符类型

定义字符使用byte

字母、数字、标点等字符底层是按照ASCII码进行存储,本质上是一个整数,可以至直接参与运算,输出字符的时候会将对应码值输出。

package main
import "fmt"

func main(){ 
    var c1 byte = 'a'
    var c2 byte = '6'
    var c3 byte = '('
    fmt.Println(c1 + 20) //117
    fmt.Println(c1) //97
    fmt.Println(c2) //54
    fmt.Println(c3) //40
}


??汉字字符,底层对应的是Unicode码值,使用byte会报错类型溢出,因为byte的范围是255,可以使用int

?

?如果想显示对应的字符,必须采用格式化输出

?

转义字符?

常用转义字符

\n 换行? ? \b 退格? ? \r?光标回到本行开头,后续就会替换原有的字符

\t 制表符? ?\" 输出"

布尔型

? ? ? ? 布尔型(bool?) 只有两个值 true和false,只占用一个字节,一般用于逻辑运算和流程控制

?

字符串?

? ? ? ? 一串固定长度的字符连接起来的字符序列

如果字符串中没有特殊字符,直接使用英文双引号包裹?

如果有特殊字符使用 英文反引号包裹或转义字符

字符串拼接 使用? +? ?或者 +=,当字符过长时吗+ 需要保留在上一行的最后

基本数据类型默认值

数据类型默认值数据类型默认值
整数类型0布尔false
浮点类型0字符串"" 空串

数据类型转换

基本数据类型转换

?go语言没有自动类型转换,必须显示转换,表达式 T(v) 将值v转换为T类型

表数范围大的类型转换表数范围小的类型会有精度丢失的问题

例如:

package main
import "fmt"

func main(){ 
    var i int8 = 3
    var f float32 = float32(i)
    fmt.Println(i) 
    fmt.Println(f) 
}

基本类型转string

方式1:fmt.springf("%参数",表达式)

方式2:需要使用strconv包的函数

%T 和?strconv. FormatXxxx? 的使用详见go的api文档

package main
import "fmt"
import "strconv"
func main(){ 
    
    var i int = 19
    var str1 string = fmt.Sprintf("%d",i) 
    fmt.Println(str1)  //%d 10进制转字符串
    var str2 string = strconv.FormatInt(int64(i),10)
    fmt.Println(str2)  

    var f float64 = 19.0
    var str3 string = fmt.Sprintf("%f",f) 
    var str4 string = strconv.FormatFloat(f,'f',9,64) 
    fmt.Println(str3)  //%f 浮点型转字符串
    fmt.Println(str4)
}

string转基本类型

使用strconv包的函数,详见go语言的api

string转其他类型的时候必须是有效的数据,否者会转为对应的默认值

package main
import "fmt"
import "strconv"
func main(){ 
    
    var s1 string = "true"
    var b bool
    /*
        ParseBool 函数有两个返回值(value bool,err error)
        value是我们需要的数据,err是出现的错误
        err可以使用 _ 忽略
    */
    b , _= strconv.ParseBool(s1)
    fmt.Println("b的类型是:%T,b=%v ",b,b)

}

文章来源:https://blog.csdn.net/m0_37514863/article/details/135374433
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。