Golang基础知识学习

变量创建

var <name> <type>
var name string = "Python编程时光" // 1

var (
    name string
    age int
    gender string
)// 2

name := "Python编程时光" //3
name, age := "wangbm", 28 // 4

变量分为两种 普通变量指针变量

普通变量,存放的是数据本身,而指针变量存放的是数据的地址。

切片

类似java中的arrayList。

// 声明字符串切片
var strList []string

// 声明整型切片
var numList []int

// 声明一个空切片
var numListEmpty = []int{}

// make( []Type, size, cap )
// 类型(Type),长度(size),容量(cap)
import (
 "fmt"
)

func main() {
 a := make([]int, 2)
 b := make([]int, 2, 10)
 fmt.Println(a, b)
 fmt.Println(len(a), len(b))
 fmt.Println(cap(a), cap(b))
}

字典

类似Java中的Map
语法:map[KEY_TYPE]VALUE_TYPE

初始化

// 第一种方法
var scores map[string]int = map[string]int{"english": 80, "chinese": 85}

// 第二种方法
scores := map[string]int{"english": 80, "chinese": 85}

// 第三种方法
scores := make(map[string]int)
scores["english"] = 80
scores["chinese"] = 85

判断key是否存在

import "fmt"

func main() {
    scores := map[string]int{"english": 80, "chinese": 85}
    if math, ok := scores["math"]; ok {
        fmt.Printf("math 的值是: %d", math)
    } else {
        fmt.Println("math 不存在")
    }
}

对字典进行循环

import "fmt"

func main() {
    scores := map[string]int{"english": 80, "chinese": 85}

    for subject, score := range scores {
        fmt.Printf("key: %s, value: %d\n", subject, score)
    }
}

指针

  • 普通变量:存数据值本身
  • 指针变量:存值的内存地址

Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。

如何使用指针

指针使用流程:

定义指针变量。
为指针变量赋值。
访问指针变量中指向地址的值。
在指针类型前面加上 * 号(前缀)来获取指针所指向的内容。

上面的三段代码中,指针的操作都离不开这两个符号:

& :从一个普通变量中取得内存地址

:当在赋值操作值的右边,是从一个指针变量中取得变量值,当*在赋值操作值的左边,是指该指针指向的变量

// 定义普通变量
aint := 1
// 定义指针变量
ptr := &aint

// 创建指针
astr := new(string)
// 给指针赋值
*astr = "Go编程时光"

aint := 1
var bint *int  // 声明一个指针
bint = &aint   // 初始化

package main

import "fmt"

func main() {
   var a int= 20   /* 声明实际变量 */
   var ip *int        /* 声明指针变量 */

   ip = &a  /* 指针变量的存储地址 */

   fmt.Printf("a 变量的地址是: %x\n", &a  )

   /* 指针变量的存储地址 */
   fmt.Printf("ip 变量储存的指针地址: %x\n", ip )

   /* 使用指针访问值 */
   fmt.Printf("*ip 变量的值: %d\n", *ip )
}
//答案:
//a 变量的地址是: 20818a220
//ip 变量储存的指针地址: 20818a220
//*ip 变量的值: 20

if-else

if 条件 1 {
  分支 1
} else if 条件 2 {
  分支 2
} else if 条件 ... {
  分支 ...
} else {
  分支 else
}

import "fmt"

func main() {
    age := 20
    if age > 18 {
        fmt.Println("已经成年了")
    }
}

for 循环

for [condition |  ( init; condition; increment ) | Range]
{
   statement(s);
}

a := 1
for a <= 5 {
    fmt.Println(a)
    a ++
}

import "fmt"

func main() {
    for i := 1; i <= 5; i++ {
        fmt.Println(i)
    }
}

// 不接表达式:无限循环
for {
    代码块
}

// 集合遍历
import "fmt"

func main() {
    myarr := [...]string{"world", "python", "go"}
    for _, item := range myarr {
        fmt.Printf("hello, %s\n", item)
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值