zoukankan      html  css  js  c++  java
  • Go 类型

    Go语言:一种静态类型的编程语言

    Go基本类型

    Go基本类型?Go语言自带的类型,比如数值类型、浮点类型、字符类型以及布尔类型。

    特点?原始类型,不可改变,对其操作(比如把值传递给函数:实际上传递的是一个值的副本),在多线程安全

    func main() {
        name:="张三"
        fmt.Println(modify(name))  //张三张三    传递的是一个副本,返回的是一个新创建的字符串
        fmt.Println(name)          //张三       本来name的值未改变
    }
    
    func modify(s string) string{
        s=s+s
        return s
    }

    Go引用类型

    引用类型有?切片、map、接口、函数类型以及chan

    引用类型原理?创建引用类型的变量,其实是一个标头值,标头值里包含一个指针,指向底层的数据结构,当我们在函数中传递引用类型时,其实传递的是这个标头值的副本,它所指向的底层结构并没有被复制传递,这也是引用类型传递高效的原因。

    注:本质上可理解函数的传递都是值传递,不过引用类型传递的是一个执行底层数据的指针,可修改共享的底层数据的值,进而影响到所有引用这个共享底层数据的变量。

    特点是?它的修改可以影响到任何引用到它的变量

    func main() {
        ages := map[string]int{"张三": 20}
        fmt.Println(ages)      //20
        modify(ages)
        fmt.Println(ages)      //10
    }
    
    func modify(m map[string]int) {
        m["张三"] = 10
    }

    结构类型

    结构类型的作用?用来描述一组值,本质上是一种聚合型的数据类型。

    结构体内的值可以有哪些?基本的原始类型、引用类型,或者自己定义的其他类型。

    注:如果允许修改值本身,选择引用类型,如果不允许,选择基本类型。

    func main() {
        //jim := person{10,"Jim"}
        //var p person
        jim := person{10,"Jim"}
        fmt.Println("原始的jim",jim)  
        modify(jim)
        fmt.Println("modify之后的jim",jim)  
        modify1(&jim)
        fmt.Println("modify1之后的jim",jim) 
    }
    
    func modify(p person) {
        p.age =p.age+10
    }
    
    func modify1(p *person){
        p.age = p.age+10
    }
    
    type person struct {
        age int
        name string
    }

    输出:

    原始的jim {10 Jim}
    modify之后的jim {10 Jim}
    modify1之后的jim {20 Jim}

    自定义类型

    法一:上面的结构体类型,就是我们自定义的类型。

    法二:基于一个已有的类型,就是基于一个现有的类型创造新的类型,这种也是使用type关键字。

    type Duration int64
    //Go语言是一种强类型语言,虽然Duration基于int64创建,但不能相互赋值
    var dur Duration
    //dur = int64(100)  报错 类型转换异常
    fmt.Println(dur)  //输出为0
  • 相关阅读:
    JavaBean
    J2EE的13个规范
    IntelliJ IDEA 常用快捷键列表及技巧大全
    服务端工程师入门与进阶 Java 版
    新兵训练营课程——环境与工具Java[转]
    asp.net 局域网中获取 client的机器名
    css 阻止元素中的文本。双击选中
    正则实践
    jq dom不存在时绑定事件
    正则预查
  • 原文地址:https://www.cnblogs.com/ycx95/p/9386032.html
Copyright © 2011-2022 走看看