程序员的知识教程库

网站首页 > 教程分享 正文

变量、常量、数据类型、运算符(常量和变量都有数据类型对吗)

henian88 2024-10-22 11:47:54 教程分享 10 ℃ 0 评论

## 1 变量定义以及声明

- 理解变量定义

- 掌握变量声明

package main
import "fmt"
func main() {
	var i int = 1
	var j = 2
	var (
		k = 3
		l = 4
	)
	z := 5
	fmt.Println(i, j, k, l, z)
}

- 以上代码是变量声明常见的几种方式,分为单变量和多变量声明,其中变量声明的格式为var 变量名 数据类型(可选,不写会默认去推导),:=是变量声明中一种简短声明,非常适合用于初始化变量。

- 变量是可变的数据类型,表示在程序运行过程中可能修改一次或多次

## 2 指针

- 要了解变量存储原理,不乏要理解指针,指针简单来说就是变量存储的位置,也就是常说的内存地址或内存空间,指针是指向这个变量在内存中的具体位置。


## 3 常量定义以及常量声明和常量生成器

- 常量,顾名思义是固定不变的量,也就是指在编译前就已经固定好的值,防止程序在运行的时候被篡改。

const a int = 1
fmt.Println(a)

- 常量是需要使用const关键字去声明


- 常量生成器

const (
	b int = iota + 1
	c
	d
)
	fmt.Println(b, c, d)


- 常量生成器能够帮助我们快速生成有相似规则的常量。

## 4 数据类型简介以及基本数据类型的分类

- 人有年龄,性别等信息,其中年龄是数字,性别是字符串,数据类型其实就是把这些不同类型的信息进行了分类,这就是数据类型的作用。


- 基本数据类型分类分为有符号整数型(int int8 int16 int32 int64),无符号整数型(uint uint8 uint16 uint32 uint64),浮点型(float32 float64),字符串型(string),布尔型(true, false),零值,其中有符号整数型就是跟数学中一样,有正数,负数和0,无符号整数型就是只有零和正数,浮点型其实就是生活中的小数,字符串可以用来描述地址,姓名这些信息等,布尔型只有true和false,一般用来进行逻辑判断,零值则是如果在初始化的时候没有指定一个值,那么就会自动默认为该数据类型对应的零值,例如整数型的零值为0,字符串的零值为空字符串,布尔型的零值为false等。


- 注意: 整型里面还有个byte类型,但是这个byte类型其实就跟unit8类似

## 5 基本数据类型的相互转换以及定义

- 为什么要进行数据类型的相互转换

- 整型和浮点型的相互转换

- 字符串和整型的相互转换

- 字符串和浮点型的相互转换


- 因为GO语言是强类型的语言,不同的数据类型是不能进行相互计算的,必须要进行类型转换才可以进行相互计算和使用。


package main
import (
"fmt",
"strconv"
)
func main(){
    var i int = 1
    var o float64 = 2
    fmt.Printf("i的数据类型为: %T\n", i)
    fmt.Printf("o的数据类型为: %T\n", o)
    var a = float64(i)
    var b = int(o)
    fmt.Printf("更改后i的数据类型为: %T\n", a)
    fmt.Printf("更改后o的数据类型为: %T\n", b)
}


- 以上代码就是整型和浮点型的相互转换,可以使用关键字float64和int去进行转换。


package main
import (
"fmt",
"strconv"
)

func main(){
	var n string = "123"
	fmt.Printf("字符串的数据类型为: %T\n", n)
	m, err := strconv.Atoi(n)
	fmt.Printf("字符串转换后的数据类型为: %T\n", m)
	fmt.Println("提示信息为: ", err)
	l := strconv.Itoa(m)
	fmt.Printf("整型转换为字符串: %T\n", l)
}


- 以上代码就是字符串和整型的相互转换,可以使用strconv中的Atoi和Itoa进行相互转换,其中Atoi中的err为提示信息,如果为nli则表示转换成功,否则转换失败。

package main
import (
"fmt"
"strconv"
)

func main(){
	var g string = "3"
	floatvar, err := strconv.ParseFloat(g, 64)
	fmt.Printf("转换后的数据类型为: %T\n", floatvar)
	fmt.Println("提示信息为: ", err)
	str := strconv.FormatFloat(floatvar, "f", 1, 64)
	fmt.Println(str)
}


- 以上代码就是字符串和浮点型的相互转换,可以使用strconv中的ParseFloat和FormatFloat进行相互转换,其中ParseFloat中的err同样也是提示信息,为nli为成功,否则失败,还有FormatFloat中的"f"表示不使用指数的形式,1代表保留几位小数,64代表float64。


## 6 strings包常用方法(官方文档:https://www.apiref.com/go-zh/strings.htm)

package main
import (
"fmt"
"strings"
)
func main() {
	// 判断开头
	var a string = "huaweih"
	fmt.Println(strings.HasPrefix(a, "hua"))
	// 判断结尾
	fmt.Println(strings.HasSuffix(a, "wei"))
	// 分割字符串
	fmt.Println(strings.Split(a, "w"))
	// 返回子串索引
  fmt.Println(strings.Index(a, "h"))
  // 最后一个匹配索引
  fmt.Println(strings.LastIndex(a, "h"))
  // 字符串连接
  slice := []string{"aab", "aba", "baa"}
  str := strings.Join(slice, ",")
  fmt.Println(str)
  // 转换为大写
  fmt.Println(strings.ToUpper(a))
  // 转换为小写
  fmt.Println(strings.ToLower(a))
  // 字符串的包含关系
  fmt.Println(strings.Contains(a, "w"))
  // 字符串替换
  fmt.Println(strings.Replace(a, "w", "e", 1))
}


## 7 运算符

- 算术运算符(+ - * / % ++ --)

- 加减乘除跟数学一样,%为取余,++为自增1,--为自减1

- 关系运算符(== != > < >= <=)

- 等于 不等于 大于 小于 大于等于 小于等于 跟数学中也一样

- 逻辑运算符(&& || !)

- &&是逻辑与,如果两边都为true,那么为true,否则为false

- ||是逻辑或,如果两边有一个为true,那么为true,否则为false

- !是逻辑非,如果条件为true,那么逻辑非则为false

- 位运算符(暂时用不到)

- 赋值运算符(= += -= *= /= %=)

- = 给变量赋值

- += 相加后再赋值

- -= 相减后再赋值

- *= 相乘后再赋值

- /= 相除后再赋值

- %= 取余后再赋值

- 注意: 赋值运算符还有一些结合位运算符的运算符,例如<<= >>=,这些暂时用不到,所以没去深挖

- 其他运算符(& *)

- & 返回变量内存地址 &a 将给出变量内存地址

- * 指针变量 *a 是一个指针变量

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表