0
点赞
收藏
分享

微信扫一扫

glang笔记02

书坊尚 2022-05-05 阅读 60
golang

文章目录

一、变量和常量的使用

1、变量的使用

1.1、含义

变量时为存储特定类型的值而提供给内存位置的名称。在go中声明变量有多种语法

变量的本质就是一小块内存,用于存储数据,在程序运行过程中数值可以改变

1.2、声明变量

格式化输出

%s输出字符串
%d输出整型
%T输出数据类型
%p输出变量地址,&+变量名
%v值的默认格式表示
%%百分号
%b表示为二进制
%c该值对应的unicode码值
%d表示十进制
%o表示为八进制,小写字母o
%x表示为十六进制,使用a-f
%X表示为十六进制,使用A-F
%U表示为Unicode格式:U+1234,等价于"U+%04X"
%t单词true或false

var 名称类型是声明单个变量的语法

以字母或下划线开头,由一个或多个字母、数字、下划线组成

/*第一种,指定变量类型,声明后若不赋值,使用默认值
格式:
var name type
var name type = 值
name=value*/
//例子:
var name string
name="小白"
fmt.printf("名字为%s",name)

package main

import "fmt"
func main() {
	var name string
	name="小白"
	fmt.Printf("名字为%s",name)
}

//第二种,根据值自行判定变量数据类型
/*如果一个变量有一个初始值,Go将自动能够使用初始值来推断该变量的类型。如果变量具有初始值,则可以省略变量申明
*/
var name="value"
//格式化%T输出该变量的数据类型
fmt.Printf("类型是%T",name)

/*第三种、简短定义,省略var,注意 := 左侧的变量不应该是已经声明过的(多个变量同时声明时,至少保证一个是新变量),否则会导致编译出错
格式:
变量名 := 100
*/
sum := 100
fmt.Printf("类型是%d",sum)

/*
多变量同时声明
*/
var a,b, c int
a=1
b=2
c=3
var d,e int = 1,2
var f,g = 1,"GO"
fmt.Println(a,b,c,d,e,f,g)

/*
集合类型(多变量)
*/
var(
    name = "name"
    num = 100
)
var(
    name1 string = "name"
    num1 int =1
)
fmt.Println(name,name1,num,num1)

/*匿名变量使用下划线_,如果我们接收到多个变量,有一些变量使用不到,可以使用下划线_表示变量名称,这种变量叫做匿名变量。*/
package main

import "fmt"

func getNameAndAge() (string, int) {
	return "小白", 30
}

func main() {
	name, _ := getNameAndAge()
	fmt.Printf("name: %v\n", name)
}
输出:
name: 小白

1.3、注意事项

  • 变量必须先定义才能使用
  • go语言是静态语言,要求变量的类型和赋值的类型必须一致
  • 变量名不能冲突(同一个作用域内不能冲突)
  • 简短定义方式,左边的变量名至少有一个是最新的
  • 简短定义方式,不能定义全局变量
  • 变量的零值。也称为默认值,字符串默认值为空串,整型默认为0,float64(默认为0),切片(默认[]),bool(默认为false)
  • 变量定义了就要使用,否则无法编译通过

2、常量的使用——constant

2.1、常量声明

常量是一个简单值的标识符,在程序运行时,不会修改的值。

常量声明定义之后没有使用程序也是可以编译通过,变量如果声明定义之后没有使用程序会编译出错

语法:const 常量名 [类型] = 值
显式类型定义 const b string = “ABC”
隐式类型定义 const b = "abc"

//定义一组常量
const a,b=1,"abc"
const a,b int =1,2

//一组常量中,如果某个常量没有初始值,默认和上一行常量是一样的
const(
	a int=1
	b
)
fmt.Println(a,b)
输出结果为:1 1

//枚举类型:使用常量组作为枚举类型,一组相关数值的数据
const(
    SPRING=0
    SUMMER=1
    AUTUMN=2
    WINTER=3
)

2.2、常量的注意事项

  • 常量中的数据类型只可以是布尔类型、数字型(整数型、浮点型和复数)和字符串型
  • 不曾使用的常量,在编译的时候是不会报错的
  • 显示指定类型的时候,必须确保常量左右值类型一致,需要时可显示类型转换。这与变量就不一样,变量时可以不用类型值

3、特殊的常量iota

iota,特殊的常量,可以认为是一个可以被编译器修改的常量,iota可以被看作枚举值

/*第一个iota等于0,每当iota在新的一行被使用时候,它的值就会自动加一,所以a=0,b=1,c=2,两种写法*/
const(
    a=iota
    b=iota
    c=iota
)

const(
    a=iota //0
    b //1
    c//2
)

package main
import "fmt"
func main() {
	const(
		a=iota//iota=0
		b//iota=1
		c//iota=2
		d="hah"//iota=3
		e//"hah" iota=4
		f=iota //iota=5
		g//iota=6
	)
fmt.Println(a,b,c,d,e,f,g)
}
输出结果:0 1 2 hah hah 5 6

二、数据类型

1、基本数据类型

数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。

1.1、布尔型bool

布尔型的值只可以是常量 true 或者 false。var b bool = true

1.2、数值型

整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。

1、整型
类型数据范围
uint8无符号 8 位整型 (0 到 255)
uint16无符号 16 位整型 (0 到 65535)
uint32无符号 32 位整型 (0 到 4294967295)
uint64无符号 64 位整型 (0 到 18446744073709551615)
int8有符号 8 位整型 (-128 到 127)
int16有符号 16 位整型 (-32768 到 32767)
int32有符号 32 位整型 (-2147483648 到 2147483647)
int64有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)
2、浮点型
类型描述
float32IEEE-754 32位浮点型数
float64IEEE-754 64位浮点型数
complex6432 位实数和虚数
complex12864 位实数和虚数
3、其他数字类型
类型描述
byte类似 uint8
rune类似 int32
uintptr无符号整型,用于存放一个指针

1.3、字符串型

字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本

var str string
str="helloworld"

//区别'A' "A"
a :='A'
b :="A"
fmt.Printf("'A':%T,%d,\n\"A\":%T,%s",a,a,b,b)
输出结果:
'A':int32,65,
"A":string,A 

//转义字符
\+字符:例如\n换行

1.4、基本数据类型强制转换

//语法格式:Type(Value)
//常数:在有需要的时候,会自动转换
//变量:需要手动转型T(V)
//注意点:兼容的类型才可以转换
var a int8 =-8
var b uint8 = uint8(a)
fmt.Printf("a:%d  b:%d",a,b)
输出结果:
a:-8  b:248

三、运算符

1、算术运算符

+ - * / %(求余) ++ -- 
var a int8 =-8
var b int8 = 11
var c int8 =a+b
fmt.Println(c)

2、关系运算符

== != > < >= <=
a :=10
b :=11
c := a>b
fmt.Println(c)

3、逻辑运算符

&& || !(与或非)
a :=0
b :=1
c := (a>b)&&(a>b)
fmt.Println(c)

4、位运算符

在这里插入图片描述
A&^B:对于B上的每个数值,如果是0,则取A对应位的数值,如果为1,则结果位取0

在这里插入图片描述

5、赋值运算符

在这里插入图片描述

^=等等

6、运算符优先级

在这里插入图片描述

可以使用括号来提升优先级

举报

相关推荐

【笔记02】

Python笔记02

Fastjson笔记-02

javaWeb笔记02

CSS学习笔记02

0 条评论