变量、类型、指针
目录:
1:
var name string
name = "cfp"
fmt.Println("name:", name) //name: cfp
fmt.Printf("name:%s\n", name) //name:cfp
func main() {
var name string
name = "cfp"
fmt.Println("name:", name) //name: cfp
var age = 80 //第二种
fmt.Printf("name:%s,age:%d\n", name, age) //name:cfp
}
func main() {
sex := "male" //第三种
fmt.Println(sex)
}
i,j := 10,20 i,j:=j,i (不借助中间变量,直接对换两个变量的值)
要知道如果要定义全部变量的话,必须使用var 关键字,不能用我们常用的那种赋值
二、基础类型
Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性。
计算机中数据存储的最小单位为bit(位),0或者1
byte:计算机中数据的基本单元,1字节=8bit,数据在计算机中存储或者计算,至少为1个字节
-
bool
-
string
-
-
uint(无符号整数)、uint8、uint16、uint32、uint64、uintptr
-
byte //
uint8 的别名 -
rune //
int32 的别名 代表一个 Unicode 码 -
float32、float64
-
complex64、complex128
有符号和无符号的区别:int8 范围 -128-127,uint8 范围:0-255
当一个变量被声明之后,系统自动赋予它该类型的零值:
int 为 0,float 为 0.0,bool 为 false,string 为空字符串,指针为 nil
所有的内存在 Go 中都是经过初始化的。
package main
import "fmt"
var age int
func main() {
fmt.Println(age);
}
三、自增、指针
3.1:自增
3.2:指针
定义一个空指针:
package main
import "fmt"
func main() {
//可以返回栈上的指针,编译器在编译的这段代码的时候,会自动判断这段代码,将city分配到堆上。
result := test()
fmt.Println(*result)
}
//在c语言里面,我们在方法里定义了一个变量city,如果函数执行完了,是会释放掉这个变量。
//那么就会返回一个空指针回去!
//但是在go里面,让不会返回空指针,他会保存这个变量将栈上的指针进行返回(没用东西都是放到栈上)
func test() *string {
city := "深圳"
ptr := &city
return ptr
}
变量、指针和地址三者的关系是,每个变量都拥有地址,指针的值就是地址
func main() {
// 指针与变量
var room int = 10 // room房间 里面放的 变量10
var ptr = &room // 门牌号px 指针 0xc00000a0a8
fmt.Printf("%p\n", &room) // 变量的内存地址 0xc00000a0a8
fmt.Printf("%T, %p\n", ptr, ptr) // *int, 0xc00000a0a8
fmt.Println("指针地址",ptr) // 0xc00000a0a8
fmt.Println("指针地址代表的值", *ptr) // 10
}
3.3:空指针
- C 语言判断是不是空指针用 null
- C++语言判断是不是空指针用 nullptr
- go语言判断是不是空指针用 nil
func main() {
name := new(string) //定义一个字符串的空指针
*name = "呵呵"
fmt.Println(name) //0xc000010230
if name != nil{
fmt.Println("name not nil")
}
}



浙公网安备 33010602011771号