返回
北京兄弟连IT
置顶
该校与厚学网暂未合作,平台不保证课程的真实有效性,如有侵权等争议,请及时与厚学网联系处理
招生热线:400-656-1390

学校地址:北京市昌平区回龙观文华西路育荣教育园区兄弟连IT教育

兄弟连区块链培训分享Go语言中的var

62 2018-08-31 09:50:53

学习笔记

  2018年第一季度,区块链相关人才的需求已达到2017年同期的9.7倍,发布区块链相关岗位的公司数量同比增长4.6倍。

  

  截至2018年第一季度,区块链相关岗位占到互联网行业总岗位量的0.4%,但专业区块链技术人才的供需比仅为0.15:1,供给严重不足。

  

  兄弟连教育Go全栈与区块链培训课程是由清华、微软和谷歌历时半年时间研发出的无二的体系化课程。

 

go语言中定义变量使用关键字var,如:var x int=4

 

也可以写成x:=4;

 

在函数中,:= 简洁赋值语句在明确类型的地方,可以用于 var 定义。

 

:= 结构不能使用在函数外,函数外的每个语法块都必须以关键字开始。)

 

package main

import (   

    "fmt"

)

func main() {

 

    var x int = 4

    fmt.Println(x)//输出4

    fmt.Println(&x)//输出指针

    //fmt.Println(*x) //错误

    y := 4

    

    fmt.Println(y)//输出4

    fmt.Println(&y)//输出指针

    //fmt.Println(*y) //错误

 

   var v *int = new(int)//返回值为指针

    fmt.Println(*v)//输出为0,它只是将内存清零,而不是初始化内存

*v = 4//赋值

    fmt.Println(v)//输出指针

    fmt.Println(*v)//输出4

    z := new(int)//代替var v *int = new(int)

    *z = 3

    fmt.Println(z)//输出指针

    fmt.Println(*z)//输出3

}

总结go语言的变量定义返回值中隐含了指针,可以进行取指针操作,不嫩进行取值操作。

newmake的区别(转)

内存分配

 

new 是一个分配内存的内建函数,但不同于其他语言中同名的new所作的工作,它只是将内存清零,而不是初始化内存。new(T)为一个类型为T的新项目分配了值为零的存储空间并返回其地址,也就是一个类型为*T的值。用Go的术语来说,就是它返回了一个指向新分配的类型为T的零值的指针。

 

make(T, args)函数的目的与new(T)不同。它仅用于创建切片、mapchan(消息管道),并返回类型T(不是*T)的一个被初始化了的(不是零)实例。这种差别的出现是由于这三种类型实质上是对在使用前必须进行初始化的数据结构的引用。例如,切片是一个具有三项内容的描述符,包括指向数据(在一个数组内部)的指针、长度以及容量,在这三项内容被初始化之前,切片值为nil。对于切片、映射和信道,make初始化了其内部的数据结构并准备了将要使用的值。如:

 

下面的代码分配了一个整型数组,长度为10,容量为100,并返回前10个数组的切片

 

make([]int, 10, 100)

以下示例说明了newmake的不同。

 

var p *[]int = new([]int)   // 为切片结构分配内存;*p == nil;很少使用

var v  []int = make([]int, 10) // 切片v现在是对一个新的有10个整数的数组的引用

 

var p *[]int = new([]int)

fmt.Println(p) //输出:&[]

*p = make([]int, 10, 10)

fmt.Println(p) //输出:&[0 0 0 0 0 0 0 0 0 0]

fmt.Println((*p)[2]) //输出: 0

 

// 用法:

v := make([]int, 10)

fmt.Println(v) //输出:[0 0 0 0 0 0 0 0 0 0]

文中图片素材来源网络,如有侵权请联系删除
来源:北京兄弟连IT
热门课程 全部课程

热门动态

申请免费试听

只要一个电话

我们为您免费回电

立即申请