zoukankan      html  css  js  c++  java
  • Go new 和 make的区别

    1.new 返回的是指针类型,所以一般用于给非引用类型(int,string,array等)

    package main
    
    //定义一个struct
    type Person struct {
    	Name string
    	Age  int
    }
    
    func main() {
    	p1 := Person{
    		Name: fmt.Sprintf("你好呀:%v", "张三"),
    		Age:  18,
    	}
    	fmt.Printf("type:%T,value:%v
    ", p1, p1)
    	// 取出变量的内存地址,也就是指针,是通过&变量名
    	// 也就是 &p1
    	fmt.Printf("type:%T,value:%v
    ", &p1, p1)
    
    	// new 返回的是指针类型
    	p2 := new(Person)
    
    	// 指针类型访问这个类型的属性和方法
    	// 可以通过 (*p2).Name
    	// 也可以通过 p2.Name ,这种方式其实是Go的语法糖,本质上还是通过 (*p2).Name
    	p2.Name = fmt.Sprintf("你好呀:%v", "李四")
    	(*p2).Name = fmt.Sprintf("你好呀:%v", "王五")
    	p2.Age = 20
    
    	fmt.Printf("type:%T,value:%v
    ", p2, p2)
    
    	// 通过指针找到变量,是通过*变量名
    	// 也就是 *p2
    	fmt.Printf("type:%T,value:%v
    ", *p2, p2)
    }
    

    2. make 用于引用类型(map,slice,channel),一般多用于初始化

    // map的初始化
    maps := make(map[string]string, 10)
    
    // channel的初始化
    channel := make(chan string, 10)
  • 相关阅读:
    简单函数调用分析
    从函数层面看栈溢出
    C语言漏洞基础(一)
    C语言函数篇(一)
    开发一种填表机器
    阿米洛varmilo键盘
    Flops
    助力高校计算机教育 —— 码云为老师推出免费高校版
    Numerical Methods LetThereBeMath
    Git Cookbook
  • 原文地址:https://www.cnblogs.com/python-boy/p/12785395.html
Copyright © 2011-2022 走看看