Go变量常量的知识点 | 青训营笔记

42 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第2天.

变量的初始化

Go语言的变量初始化和其它语言不太一样,格式为 var 变量名 变量类型=xxx,后续还想改值,直接变量名=xxxx 比如:

var name string = "kuangshen"
name = "zhangsan"``

另外一种简洁的变量初始化:

name := "kuangshen"
age := 25
fmt.Println(name, age)
fmt.Printf("%T,%T", name, age)
//这里定义变量初始化, 只需要给出变量名, 后面跟个 := 即可给变量初始化

我们也可以同时定义多个变量.

第1种方式:

var (
   name    string
   age     int
   address string
)
name = "kuangshen"
age = 18
address = "zhongguo"
fmt.Println(name, age, address)
fmt.Printf("%T,%T", name, age)
//这里用Println打印不出来name和age的类型
//得用Printf才能打印出来

第2种方式:

var a, b, c int
a = 10
c = 40

打印变量内存地址:

var num int
num = 100
fmt.Printf("数字值:%d,内存地址:%p", num, &num)
num = 200
fmt.Printf("数字值:%d,内存地址:%p\n", num, &num)
image.png

交换变量:

var a, b, c int
a = 10
c = 40
a, c = c, a
fmt.Println(a, b, c)
image.png

匿名变量: _ = xxx

匿名变量和变量不会因为重复声明而无法使用 image.png image.png image.png

常量

const URL string = "www.baidu.com"    //显示定义
const URL2 = "www.kuangshenstudy.com" //隐式定义
const d, e, f = 18, "kuangshenshuo", 200  //同时定义多个常量
fmt.Println(URL)
fmt.Println(URL2)
fmt.Println(d, e, f)
image.png

iota

iota,特殊常量,可以认为是一个可以被编译器修改的常量,iota是go语言的常量计数器.

iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明之前将使iota计数一次(iota可理解为const语句块中的行索引).

package main

import "fmt"

func main() {
   const (
      a = iota  //0
      b         //1
      c      //2
      d = "kuangshen" //"kuangshen"
      e  //"kuangshen"
      f = 100         //100
      g         //100
      h = iota    //7
      i           //8
   )
   const (
      j = iota  //0
      k         //1
   )
   fmt.Println(a, b, c, d, e, f, g, h, j, k)
}

image.png

我是一个大二学生,如果你感觉我写的很菜,不喜勿喷啊,不要伤害一个幼小的心灵好嘛

image.png

如果我有哪里写的不正确,还请各位大佬勇敢指出来,小弟的成长之路就靠在座的各位大哥了.

如果觉得我写的还行,可以鼓励一下嘛~