golang学习笔记-4

package main

import (

    "fmt"

    "unicode"

)

func main() {

    //运算符。算术运算符,逻辑运算符,位运算符, << >> | ^ & 。赋值运算符, ++,--(独立的语句,单独放一行) .= +=比较运算符, == != <=

    //数组. var age [30]int 。数组包含元素的类型和数组的长度 。 值类型,

    var name string

    name = "理想"

    fmt.Println(name)

    var ages [30]int //声明了一个变量ages,他是[30]int类型

    ages = [30]int{1, 2, 3, 15: 2}

    var ages2 = [...]int{1, 2, 3, 4, 10, 18: 2341}

    fmt.Println(ages, ages2)

    //二维数组

    var a1 [3][2]int

    fmt.Println(a1)   //[[0 0] [0 0] [0 0]]

    a1 = [...][2]int{ //多维数组最外层可以加 ...

        2: {1, 2},

        1: {3, 4},

        0: {5, 6},

    }

    fmt.Println(a1)

    //go语言中的函数传递的都是值

    //切片,三要素,指针,长度,容量 。切片不存值,它就像一个框,去底层数组框值

    var s1 []int //没有分配内存,== nil

    fmt.Println(s1 == nil)

    s1 = []int{1, 2, 3}

    fmt.Println(s1)

    //copy函数

    //make初始化,

    s2 := make([]bool, 2, 4)

    fmt.Println(s2)

    s3 := make([]int, 0, 4)

    fmt.Println(s3 == nil) //分配了内存,偏向底层的语言,要申请内存不需要释放内存

    //切片的扩容策略: 1 <1024 *2 . 2 >1024, *1.25 3 如果申请的容量大于原来的2倍,就直接扩容至新申请的容量 4 具体存储的值类型不同,扩容策略也有一定的不同。

    //append函数

    var s4 []int //必须初始化后才能操作

    //s4=make([]int,1)

    //s4[0]=2345

    s4 = append(s4, 11) //自动初始化切片

    fmt.Println(s4)

    //copy函数

    var s5 = []int{1, 2, 3}

    s6 := s5

    //var s7 []int //nil

    //var s7 = make([]int, 1, 3) //桶满了,装不下

    var s7 = make([]int, 3)

    copy(s7, s5)

    fmt.Println(s6)

    s6[1] = 100

    fmt.Println(s6, s5, s7)

    //指针

    // &, *. go语言的指针只能读,不能修改,不能修改指针变量指向的地址的

    addr := "沙河"

    addrP := &addr

    fmt.Println(addrP)

    fmt.Printf("%T,,%v\n", addrP, *addrP)

    //map

    //存储的键值对的数据,也是需要申请内存的,引用类型

    var m1 map[string]int

    fmt.Println(m1 == nil)

    m1 = make(map[string]int, 10)

    m1["lixiang"] = 100

    fmt.Println(m1, m1["jiwuming"]) //如果取不到,返回的是value对应类型的零值

    score, ok := m1["jiwuming"]

    if !ok {

        fmt.Println("没有姬无命这个人")

    } else {

        fmt.Println("姬无命的分数是", score)

    }

    delete(m1, "lixiang") //删除的值不存在则什么都不干

    fmt.Println(m1)

    fmt.Println(m1 == nil) //已经开辟内存,不为nil

    //判断字符串中汉字的数量,难点是判断一个字符是汉字。

    prac1 := "hello沙河"

    for _,c := range prac1{

        if unicode.Is(unicode.Han,c)

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值