Go基础---->go的基础学习(一)

  这里面记录一些学习go的基础知识。

go的基础知识

一、go中的map的使用

package main 

import (
    "fmt"
)

type PersonInfo struct {
    ID string
    Name string
    Address string
}

func main() {
    // declare map
    // var personDB map[string] PersonInfo

    // create map
    var personDB = make(map[string] PersonInfo, 100)

    // insert data
    personDB["LL"] = PersonInfo{"123456", "LL", "wuhan"}
    personDB["huhx"] = PersonInfo{"123456", "huhx", "huanggang"}

    // query key is exiest
    person, ok := personDB["huhx"]
    if ok {
        fmt.Println("Found Person: ", person.Name, ", address", person.Address) // Found Person:  huhx , address huanggang
    } else {
        fmt.Println("No person found")
    }

    // delete key from map
    fmt.Println("Before delete: ", len(personDB)) // Before delete:  2
    delete(personDB, "huhx")
    fmt.Println("After delete: ", len(personDB)) // After delete:  1
}

二、go中数组切片的使用

package main 

import "fmt"

func printArray(array []int) {
    for _, v := range array {
      fmt.Print(v, " ")
  }
  fmt.Println()
}

func main() {
    mySlice := make([]int, 5, 10)
    fmt.Println("len: ", len(mySlice)) // len:  5
    fmt.Println("cap: ", cap(mySlice)) // cap:  10

    // append elements
    mySlice = append(mySlice, 1, 2, 3)
    mySlice2 := []int{8, 9, 10}
    mySlice = append(mySlice, mySlice2...) 

    // get data
    printArray(mySlice) // 0 0 0 0 0 1 2 3 8 9 10

    // slice from array
    newSlice := mySlice[3:]
    printArray(newSlice) // 0 0 1 2 3 8 9 10

   // content copy
  slice1 := []int{1, 2, 3, 4, 5}
    slice2 := []int{5, 4, 3}
    copy(slice2, slice1) // 只会复制slice1的前3个元素到slice2中
    printArray(slice2) // 1 2 3
    slice2 = []int{5, 7, 8, 9}
    copy(slice1, slice2) // 只会复制slice2的4个元素到slice1的前4个位置
    printArray(slice1) // 5 7 8 9 5
}

三、go中的数组是一个值类型

在Go语言中数组是一个值类型(value type)。所有的值类型变量在赋值和作为参数传递时都将产生一次复制动作。如果将数组作为函数的参数类型,则在函数调用时该参数将发生数据复制。

package main 

import "fmt"

func modify(array [5]int) {
    array[0] = 10
    fmt.Println("In modify(), array values: ", array) // In modify(), array values:  [10 2 3 4 5]
}

func main() {
    array := [5]int{1, 2, 3, 4, 5}
    modify(array)
    fmt.Println("In main(), array values: ", array) // In main(), array values:  [1 2 3 4 5]
}

四、go中的关于循环流程

package main 

import "fmt"

func exampleIf(x int) string {
    var result string
    if x == 0 {
        result = "huhx"
    } else {
        result = "LL"
    }
    return result
}

func exampleSwitch(i int) {
    switch i {
        case 0:
            fmt.Print("huhx 0 ")
            fallthrough
        case 1:
            fmt.Print("linux 0 ")
        case 2:
            fmt.Print("LL 0 ")
        default:
            fmt.Println("tomhu 0 ")
    }
}

func exampleFor(x int) int {
    sum := 0
    for i := 0; i < x; i++ {
        sum += i
    }
    return sum
}

func exampleWhile(x int) int{
    sum := 0
    for {
        sum ++
        if sum > x {
            break
        }
    }
    return sum
}

func exampleGoto(x int) {
    i := 0
    HERE:
    fmt.Print(i, " ")
    i ++
    if i < x {
        goto HERE
    }
}

func main() {
    // test if
    fmt.Println(exampleIf(0)) // huhx

    // test switch
    exampleSwitch(0) // huhx 0 linux 0
    fmt.Println()

    // test for
    fmt.Println(exampleFor(10)) // 45

    // test while
    fmt.Println(exampleWhile(100)) // 101

    exampleGoto(10) // 0 1 2 3 4 5 6 7 8 9
}

友情链接

时间: 2024-08-24 11:11:35

Go基础---->go的基础学习(一)的相关文章

C语言零基础项目驱动式学习第四天

//类型修饰符  数组名[数组元素个数] = {初始化}; //定义数组的时候[]中必须是常量表达式, 不可以是变量; /* int age[5] = {21, 18, 25, 20, 18}; int array[10] = {0};//代表数组中有10个元素, 每个都是0; int array1[8] = {1};//代表数组中有8个元素,第一个是1,其余的为0; int age2[2 + 3] = {0}; */ //定义数组和使用数组的最大区别是, 前面是否有类型修饰符 //使用数组元素

黑马程序员_毕向东_Java基础视频教程_Java基础学习知识点总结

黑马程序员_毕向东_Java基础视频教程 Java基础学习知识点总结 2016年01月06日  day01 一.基础知识:软件开发 1.什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合. 2.常见的软件:系统软件:如:DOS,Windows,Linux等.应用软件:如:扫雷,迅雷,QQ等. 3.什么是开发?制作软件. 二.基础知识:人机交互方式 4.软件的出现实现了人与计算机之间的更好的交互. 5.交互方式:图形化界面:这种方式简单直观,使用者易于接受,容易上手操作.命令行方式:

C语言零基础项目驱动式学习第二天

//BOOL 类型是一种非真即假的数据类型,取值只有YES和NO, //BOOL 其实是OC中得数据类型,在C语言中,认为非0即为真. //BOOL 类型规定的存储空间为一个字节. //    BOOL a = YES; //    BOOL b = NO; //    printf("a = %d, b = %d\n", a, b); //    int a = 15, b = 18; //    BOOL c = a > b; //    printf("c = %

C语言零基础项目驱动式学习第三天

一 while循环二do   while循环三 for循环for循环的执行顺序用如下表达式: for(expression1;expression2;expression3)        循环变量初值; 循环条件; 循环变量增量  {                expression4; }       执行的顺序应该是: 1)第一次循环,即初始化循环.      首先执行表达式expression1(一般为初始化语句):再执行expression2(一般为条件判断语句),判断express

C语言零基础项目驱动式学习第一天

引言: 智能手机(Smart Phone)是一种运算能力及功能比传统手机更强的手机.目前的操作系统基本上有以下几种: 1. Symbian Os 众所周知塞班隶属于NOKIA,Symbian开发之初的目标是保证在较低资源的设备上能长时间的运行,这导致了塞班的应用程序开发有着较为陡峭的学习路线,开发成本高,但是程序的运行的效率很高> 2.Android 开源, 联盟,Android凝聚了几乎遍布全球的力量,这是Android形象及声音能够被传到全球移动互联网市场每一个角落的根本原因.不过, 1).

如何夯实(Java)编程基础,并深入学习和提高

如何夯实(Java)编程基础,并深入学习和提高? 240赞同反对,不会显示你的姓名 匿名用户 240 人赞同 多学习...网上自学的学习网站很多,见以下榜单~一.汇总榜单: 公开课_学习网站导航 收录了网易.多贝.传课等众多公开课学习网站 大学生常用_学习网站导航收录了外语学习.就业.实习.考研等众多大学生相关的学习网站 IT互联网_学习网站导航收录了IT.程序员.web开发.移动开发等众多互联网相关的学习网站 IT职业技能_学习网站导航收录了产品经理.UI设计师.前端.网络安全等互联网职业技能

基础篇D1 -- Python学习之路

编程语言分类 1. 编译型和解释型 编译型:有负责翻译的程序来给源代码进行转换,生成可执行代码.这个过程叫做编译(compile),负责编译的程序叫做编译器(compiler).源代码进行编译后会生成一个可执行文件. 编译型语言操作过程: 优点:编译器一般会有预编译的过程对代码进行优化.因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高.可以脱离语言环境独立运行. 缺点:编译之后如果需要修改就需要整个模块重新编译.编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会

【Android开发学习笔记】【第四课】基础控件的学习

通过一个简单的例子来学习下面几种控件: 1.TextView:简单的文本显示控件 2.EditText:可以编辑的文本框 3.Button:按钮 4.Menu:这里指的是系统的Menu 5.Toast:消息提示控件,类似于MFc的tip(不知道理解的对不对) 顺便用到上一次学习的多个Activity之间传递数据的技术,来做一个小的计算乘法的case 步骤: (1)主Activity 和显示结果的 Activity 都采用线性布局,下面是布局文件的源代码: <LinearLayout xmlns:

蓝鸥Unity开发基础—— 二维数组学习笔记

蓝鸥Unity开发基础-- 二维数组学习笔记 一.二维数组 有两个下标的数组叫做二维数组 类似[,]数组名=new类型[常量表达式1,常量表达式2] int[,] numbers= new int[2,3]; [0,0] [0,1] [0,2] [1,0] [1,1] [1,2] 举例说明 using System; namespace Lesson16{    class MainClass    {        public static void Main (string[] args)

20165334 学习基础与c语言学习心得

学习基础和c语言学习心得 一.技能学习 ??我觉得在男生中,我做饭应该算不错的.我是小学四年级开始学做饭,从刚开始的学煮饭,到后来的蒸馒头,到最后的炒家常菜真的很有成就感.首先,我觉得做任何事情兴趣很重要,因为小时候喜欢美食,所以特别喜欢做东西给别人吃:其次我觉得别人的鼓励也非常重要,它会是你坚持下去的动力.因为受到爸爸对我做饭的鼓励,做晚饭从一开始的西红柿鸡蛋面到后来的三菜一汤,虽然做饭花的时间越来越多,但自己的成就感也越来越强.看着别人吃自己做的东西,自己感到很开心.所以这和娄老师下面这段话