美文网首页
【Go 精选】基本语法 - 变量声明和初始化

【Go 精选】基本语法 - 变量声明和初始化

作者: 熊本极客 | 来源:发表于2022-12-24 12:13 被阅读0次

1.基本变量的声明和初始化

声明变量可以使用 var 关键字:var identifier type
声明和初始化变量可以使用: var identifier type = value

# 声明的方式1
var a int
var b bool
var str string

# 声明的方式2
var (
    a int
    b bool
    str string
)

# 声明和初始化
var a int = 15
var i = 5
var b bool = false
var str string = "Go says hello to the world!"

说明Go 的基本数据类型分为整型、浮点型、复数、布尔型和字符串型等

2.指针变量的声明和初始化

程序在内存中存储,每个内存块有一个地址,通常用十六进制数表示,如:0x6b08200xf84001d7f0。Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。

声明指针变量可以使用:var identifierPointer *type

var i1 = 5
fmt.Printf("An integer: %d, it's location in memory: %p\n", i1, &i1)
# 输出的内容是 An integer: 5, its location in memory: 0x6b0820

var intP *int
intP = &i1
fmt.Printf("The value at memory location %p is %d\n", intP, *intP)
# 输出的内容是 The value at memory location 0x24f0820 is 5

如下图所示,intP 指向了 i1 所在的内存地址

image.png

3.结构体的定义和初始化

结构体的定义type T struct {a int, b string}

type identifier struct {
    field1 type1
    field2 type2
    ...
}

初始化结构体new{}make、工厂方法

package structPack

type ExpStruct struct {
    I1  int
    F1  float32
    Str string
}

package main

type innnerStruct struct {
    i1  int
    f1  float32
    str string
}

func main() {
    // new 方式初始化
    // 说明:结构体内的变量需要可以直接访问
    struct1 := new(structPack.ExpStruct)
    struct1.I1 = 10
    struct1.F1 = 15.5
    struct1.Str= "Chris"
    fmt.Println("%s", *stuct1)
    
    // {} 方式初始化
    // 说明:结构体内的变量需要可以直接访问
    struct2 := &innnerStruct{10, 15.5, "Chris"}
    var struct3 innnerStruct
    struct3 = innnerStruct{10, 15.5, "Chris"}
    fmt.Println("%s", *stuct3)

    // make 方式初始化
    struct4 := new(chan structPack.ExpStruct)
    fmt.Println("%s", <- stuct4)
}

问题1:结构体 type Point struct { x, y int } 的内存布局?
① 使用 new 初始化

image.png

② 使用 {} 初始化

image.png

问题2:newmake 初始化结构体的区别?
new 的参数是类型、返回值是类型的指针;make 只能初始化 slice、map 以及 channel 类型的对象, 其返回值为类型,而不是指针。

// 参数是类型,返回值是类型的指针,其值被初始化为“零”(类型对应的零值,int 初始化为0,bool初始化为 false 等)
func new(Type) *Type

// 仅用于分配和初始化slice、map 以及 channel 类型的对象,三种类型都是结构体。返回值为类型,而不是指针。
func make(t Type, size ...IntegerType) Type

问题3:如何使用工厂方法创建的结构体并引用?

package matrix

type matrix struct {
    mi1 int
    mf1 float32
}

func NewMatrix(mi1 int, mf1 float32) *matrix {
    m := new(matrix) // 初始化 m
    m.mi1 = mi1
    m.mf1 = mf1
    return m
}

package main

func main() {
    m := matrix.NewMatrix(1, 1.5) 
    fmt.Println("%s", *m)
}

4.容器的定义和初始化

// 1.数组类型
// var identifier [len]type
var arr1 [5]int
for i:=0; i < len(arr1); i++ {
    arr1[i] = i * 2
}

var arrAge = [5]int{18, 20, 15, 22, 16}
var arrKeyValue = [5]string{3: "Chris", 4: "Ron"}

// 2.map类型
// var identifier map[keytype]valuetype
var mapLit map[string]int
var mapAssigned map[string]int

mapLit = map[string]int{"one": 1, "two": 2}
mapAssigned := make(map[string]float32)

mapAssigned["key1"] = 4.5
mapAssigned["key2"] = 3.14159
mapAssigned["two"] = 3
for key, value := range mapAssigned {
     fmt.Printf("key is: %d - value is: %f\n", key, value)
}

// 3.list类型
l := list.New()
l.PushFront("犬小哈教程")
l.PushBack("www.quanxiaoha.com")
for i := l.Front(); i != nil; i = i.Next() {
      fmt.Println(i.Value)
}

注意:不要使用 new 构建 map,而要采用 make,如果错误的使用 new () 分配了一个引用对象,就会获得一个空引用的指针。

相关文章

  • 【Go 精选】基本语法 - 变量声明和初始化

    1.基本变量的声明和初始化 声明变量可以使用 var 关键字:var identifier type声明和初始化变...

  • [笔记]go语言基础语法

    0.基本语法结构 1、 变量 变量的声明和初始化 go语言的变量声明需要使用var一下,或者使用海象运算符 变量类...

  • Go 语言基础--变量&数据类型

    go 变量 Golang 变量声明和初始化比起其他语言要简单一些,并且丰富不少。语法: var identifie...

  • Go语言笔记 | 03-变量的声明和初始化

    Go语言笔记 | 03-变量的声明和初始化 变量声明 在 go 语言中声明一个变量一般要用到关键字 var,变量声...

  • 我们一起学习GO语言 02

    接下来我们进入Go语言的基本语法与使用-变量 Go语言中标准声明变量的格式:var 变量名称 变量类型 例如-01...

  • swift 4.x 变量和常量

    一 变量和常量的声明及初始化 声明变量或常量都有两种语法格式 声明变量的第一种语法格式为: var 变量名 = 初...

  • Kotlin 语法 (笔记 一)

    Kotlin 语法 (笔记 一) 1.基本使用 变量声明:var 变量, val 常量 只能初始化赋值一次va...

  • 【Golang 基础】Go 语言的变量与常量

    Go 语言的变量与常量 变量声明,初始化与赋值 (示例代码) 变量的声明格式:var <变量名称> [变量类型];...

  • Salesforce基础 - Apex变量

    变量 变量使用 java 风格的语法声明。例如: 和 Java 一样,多个变量可以在一个语句中声明和初始化,使用逗...

  • 第2章-基本语法

    基本语法 一、变量与常量 1.1 什么是变量 变量是为存储特定类型的值而提供给内存位置的名称。在go中声明变量有多...

网友评论

      本文标题:【Go 精选】基本语法 - 变量声明和初始化

      本文链接:https://www.haomeiwen.com/subject/efnbqdtx.html